Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.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# 如何在将项添加到ToolStripMenuItem.DropDownItems集合时获得通知_C#_Winforms_Events_Toolstrip - Fatal编程技术网

C# 如何在将项添加到ToolStripMenuItem.DropDownItems集合时获得通知

C# 如何在将项添加到ToolStripMenuItem.DropDownItems集合时获得通知,c#,winforms,events,toolstrip,C#,Winforms,Events,Toolstrip,我正在用c#开发一个MDI应用程序。当两个MenuStrip组合在一起时,我遇到了问题: 我有父级表单及其menustripparentmenu和一些ToolStripMenuItem元素:Option1,Option2 然后我有一个子表单及其菜单父菜单和两个工具条带菜单项元素:选项1和其他选项。这些属性的合并属性仅适用于Opcion1和OtherOption 现在,问题来了:当显示子窗体并组合两个MenuStrip时,事件parentMenu.itemsadded将被TIGGRED,因为Oth

我正在用c#开发一个MDI应用程序。当两个MenuStrip组合在一起时,我遇到了问题:

我有父级
表单
及其
menustripparentmenu
和一些
ToolStripMenuItem
元素:
Option1
Option2

然后我有一个子
表单
及其
菜单父菜单
和两个
工具条带菜单项
元素:
选项1
其他选项
。这些属性的合并属性仅适用于
Opcion1
OtherOption

现在,问题来了:当显示子窗体并组合两个
MenuStrip
时,事件parentMenu.itemsadded将被TIGGRED,因为
OtherOption
被添加到
parentMenu.Items
集合中。
选项1的情况并非如此。请注意,
Option1.DropDownItems
(子表单)中可能有一些元素在父表单中的
Option1.DropDownItems
中不存在

如何获得有关正在添加的这些项目的通知

(为了清楚起见:假设
parentMenu.Items
只包含一个
ToolStripMenuItem选项1
,它只包含一个
ToolStripMenuItem
,比如说“optionA”。假设
childMenu.Items
只包含一个
ToolStripMenuItem选项1
,它只包含
ToolStripMenuItem选项b
。)如果两个菜单合并,我如何得到关于选项B被添加到父菜单的通知?或者我如何得到关于两个菜单合并的通知,知道哪些元素是新的?。

“菜单合并将菜单项从一个ToolStrip移动到另一个ToolStrip,而不是像Main menu那样克隆它们。”请参阅


因为它是在移动它们而不是克隆它们,所以请尝试
ToolStripItem
上的事件。为每个项目连接到此事件,当它移动到另一个toolstrip时,它将通知您。

我没有得到任何答案的原因是什么?:如果没有进行合并,则扫描OnwerChanged事件(出于任何其他原因)?是。如果所有者发生更改,事件将触发。例如,您可以手动移动它。但这不是问题,因为您只需查看新所有者并确定它是否合并(即,如果所有者是mdiparent的menustrip,则您知道它已合并)。仍然觉得这不是正确的方法。如果这是我知道你想要什么的唯一方法,我会将其标记为有效的…你想要一个MenuMerged事件,它将为你提供合并项目的列表。不幸的是,它不存在。我认为我提到的方法是获得你想要的效果的最简单方法。我认为它在标记时自动分配我认为答案是正确的。好了