ContextMenu选择了项目文本

时间:2011-06-10 21:03:18

标签: .net

如何在“ContextMenu”

中获取所选项目
 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;
            }
        }

3 个答案:

答案 0 :(得分:1)

您不需要所有这些东西来检测已按下哪个菜单项, 试试这个片段

        var pressedMenuItem = sender as MenuItem;

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

对于你说的第二个代码,你应该使用popUpMenu.MenuItems

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果您想根据菜单项执行某些操作,可以这样做。

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