我有一个Contextmenustrip菜单。一个项目有一个submneu。当用户单击菜单的主项时,“ItemClicked”事件将触发,但单击子菜单项时,不会触发“ItemClicked”事件。 如何通过单击子菜单项和主菜单项来获取“ItemClicked”事件?
答案 0 :(得分:1)
您必须在子菜单本身的Click事件中编写代码。
在设计时,单击菜单将其打开,然后双击子菜单项以打开其单击事件(或单击它,然后在属性窗口中,选择事件并查找其单击事件)。
如果您想要处理所有子菜单,只需点击一下即可点击事件。然后在设计时间及其属性的事件部分中单击子菜单,找到单击事件,使用之前的向下箭头,然后选择现有的单击事件。
或者以编程方式执行:
foreach(ToolStripMenuItem tmi in this.Controls.OfType<ToolStripMenuItem>())
tmi.Click += (s,ev) => {
// your code here
};
答案 1 :(得分:0)
问题是它是两个不同的控件,每个控件都有自己的事件处理程序。将您的子菜单'ItemClicked'订阅到其父控件使用的相同事件处理程序。
即:
parent.ItemClicked += itemClicked;
child.ItemClicked += itemClicked;
其中itemClicked
是处理ItemClicked
事件的方法。