2011-06-10 82 views
0

如何在「文本菜單」文本菜單選擇項文本

ContextMenu popUpMenu; 

    private void Form1_Load(object sender, EventArgs e) 
     { 
      // build the outputList context menu 
      popUpMenu = new ContextMenu(); 
      popUpMenu.MenuItems.Add("Item 1", new EventHandler(popUpMenu_Click)); 
      popUpMenu.MenuItems.Add("Item 2", new EventHandler(popUpMenu_Click)); 
      popUpMenu.MenuItems.Add("-"); 
      popUpMenu.MenuItems.Add("Item 3", new EventHandler(popUpMenu_Click)); 
      popUpMenu.MenuItems.Add("-"); 
      popUpMenu.MenuItems.Add("Item 4", new EventHandler(popUpMenu_Click)); 
      notifyIcon1.ContextMenu = popUpMenu; 
     } 

    // this sample works 
    private void popUpMenu_Click(object sender, EventArgs e) 
    { 
     string popUpMenu_txt = sender.ToString(); 
     popUpMenu_txt = popUpMenu_txt.Remove(0, 53); 

     switch (popUpMenu_txt) 
     { 
      case "Item 2": 
       { 
        MessageBox.Show("Item 2"); 
       } 
       break; 
     } 
    } 

    // and this one not? anyone knows what is wrong with this, and how to fix it? 
    private void popUpMenu_Click(object sender, EventArgs e) 
     { 

      switch (popUpMenu.MdiListItem.MdiListItem.Text) 
      { 
       case "Item 2": 
        { 
         MessageBox.Show("Item 2"); 
        } 
        break; 
      } 
     } 
+0

你想達到什麼目的? – Anuraj 2011-06-11 06:47:07

回答

1

你並不需要所有的這些東西來檢測哪個菜單項被按下獲取選定的項目, 只是嘗試這個片段

 var pressedMenuItem = sender as MenuItem; 

     string popUpMenu_txt = pressedMenuItem.Text; 
     switch (popUpMenu_txt) 
     { 
      case "Item 2": 
       { 
        MessageBox.Show("Item 2"); 
       } 
       break; 
     } 

對於你提到的第二條代碼,你應該使用popUpMenu.MenuItems

0
void popUpMenu_Click(object sender, EventArgs e) 
{ 
    MenuItem selected = (MenuItem)sender; 
    ... 
} 
0

如果はnt根據菜單項做一些事情,你可以這樣做。

private void popUpMenu_Click(object o, EventArgs e) 
{ 
    string t = (o as MenuItem).Text; 
    MessageBox.Show(t); 
}