单击工具条菜单项不正常工作的事件

本文关键字:工作 事件 不正常 菜单项 工具 单击 | 更新日期: 2023-09-27 18:05:35

我在下面写了代码并执行。但是我应该保持鼠标在菜单上("选择设备")看到它的子项目("电视","收音机").我不能通过点击菜单("选择设备")看到他们只是保持鼠标。如你所见,我使用了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);

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

void item_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    var clickedItem = e.ClickedItem;
    //Do whatever with clickedItem
}

我完全不确定你在toolStripClick方法中做什么。这完全没有意义,你在删除菜单并重新添加它。为什么? .

相关文章: