C# 单击工具栏菜单项的事件无法正常工作

C# 单击工具栏菜单项的事件无法正常工作,c#,C#,我写了下面的代码,它执行。但我应该将鼠标保持在菜单(“选择设备”)上,以查看其子项(“电视”、“收音机”)。我不能仅通过保持鼠标单击菜单(“选择设备”)来查看它们。正如您所看到的,我使用了click event,但它无法正常工作 private void Form1_Load(object sender, EventArgs e) { MakeItems(); } //its a sample. the items("tv" , "radio",.

我写了下面的代码,它执行。但我应该将鼠标保持在菜单(“选择设备”)上,以查看其子项(“电视”、“收音机”)。我不能仅通过保持鼠标单击菜单(“选择设备”)来查看它们。正如您所看到的,我使用了click event,但它无法正常工作

  private void Form1_Load(object sender, EventArgs e)
    {

        MakeItems();
    }

    //its a sample. the items("tv" , "radio",...) will change every moment.
    //in my real project i get this items dynamically by every clicking on  toolstripmenu ("select Device").
    // because of this i remove items and add them again.
    void MakeItems()
    {
        var item = new System.Windows.Forms.ToolStripMenuItem()
        {
            Name = "Test0",
            Text = "select device"
        };

        item.Click += new EventHandler(toolStripClick);


        var item2 = new System.Windows.Forms.ToolStripMenuItem()
        {
            Name = "Test1",
            Text = "TV"
        };
        var item3 = new System.Windows.Forms.ToolStripMenuItem()
        {
            Name = "Test2",
            Text = "Radio"
        };
        item.DropDownItems.Add(item2);
        item.DropDownItems.Add(item3);
        menuStrip1.Items.Add(item);
    }


    void toolStripClick(object sender, EventArgs e)
    {

        ToolStripItem myitem = (ToolStripItem)sender;
        menuStrip1.Items.Remove(myitem);
        MakeItems();

    }

您正在订阅已单击的父菜单项(“选择设备”)。这是无用的,因为您的程序在这种情况下不采取行动

您需要订阅该菜单中的每个子项:

item2.Click += new EventHandler(tv_Click);
item3.Click += new EventHandler(radio_Click);

不确定你想要达到什么目标。如果需要事件来单击子项,则需要使用事件


我完全不确定您在
toolStripClick
方法中做什么。这完全没有意义,您正在删除菜单并将其重新添加。为什么会这样?

这是一个样本。在我的real pro中,项目(“电视”、“收音机”和…)每时每刻都会发生变化。在我的实际项目中,我通过单击“选择设备”动态地获取这些项目。因此,我删除项目并再次添加。没关系,我的答案有帮助还是需要更多帮助。。?
void item_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    var clickedItem = e.ClickedItem;
    //Do whatever with clickedItem
}