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