Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未激发Contextmenustrip子菜单itemclicked事件_C#_Contextmenustrip - Fatal编程技术网

C# 未激发Contextmenustrip子菜单itemclicked事件

C# 未激发Contextmenustrip子菜单itemclicked事件,c#,contextmenustrip,C#,Contextmenustrip,我有一个上下文菜单。一个项目有一个子项目。当用户单击菜单的主项时,“ItemClicked”事件将触发,但单击子菜单项不会触发“ItemClicked”事件。 如何通过单击子菜单项以及主菜单项来获得“ItemClicked”事件?您必须在子菜单项本身的单击事件中编写代码 在设计时,单击菜单打开它,然后双击子菜单项打开其单击事件(或单击它,然后在属性窗口中选择事件并查找其单击事件) 如果要处理所有子菜单项,请单击事件和单击事件。然后单击其属性的“设计时”和“事件”部分中的子菜单,找到“单击”事件,

我有一个上下文菜单。一个项目有一个子项目。当用户单击菜单的主项时,“ItemClicked”事件将触发,但单击子菜单项不会触发“ItemClicked”事件。
如何通过单击子菜单项以及主菜单项来获得“ItemClicked”事件?

您必须在子菜单项本身的单击事件中编写代码

在设计时,单击菜单打开它,然后双击子菜单项打开其单击事件(或单击它,然后在属性窗口中选择事件并查找其单击事件)

如果要处理所有子菜单项,请单击事件和单击事件。然后单击其属性的“设计时”和“事件”部分中的子菜单,找到“单击”事件,使用其前面的向下箭头,然后选择现有的“单击”事件

或者以编程方式执行:

foreach(ToolStripMenuItem tmi in this.Controls.OfType<ToolStripMenuItem>())
tmi.Click += (s,ev) => {
    // your code here
};
foreach(this.Controls.OfType()中的ToolStripMenuItem tmi)
tmi.点击+=(s,ev)=>{
//你的代码在这里
};

问题在于它是两个不同的控件,每个控件都有自己的事件处理程序。将子菜单“ItemClicked”订阅到其父控件使用的相同事件处理程序

i、 e:


其中,
itemClicked
是一种处理
itemClicked
事件的方法。

我想在一个方法中处理所有子菜单项,您的方法会导致多个方法。谢谢您的回复,但我想在一个“itemClicked”事件中处理所有主菜单项和子菜单项。IntemClicked的参数有:(对象发送器、ToolStripItemClickedEventArgs e)
parent.ItemClicked += itemClicked;
child.ItemClicked += itemClicked;