单击工具条菜单项不正常工作的事件
本文关键字:工作 事件 不正常 菜单项 工具 单击 | 更新日期: 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
方法中做什么。这完全没有意义,你在删除菜单并重新添加它。为什么? .