C# 如何在将项添加到ToolStripMenuItem.DropDownItems集合时获得通知
我正在用c#开发一个MDI应用程序。当两个MenuStrip组合在一起时,我遇到了问题: 我有父级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
表单
及其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事件,它将为你提供合并项目的列表。不幸的是,它不存在。我认为我提到的方法是获得你想要的效果的最简单方法。我认为它在标记时自动分配我认为答案是正确的。好了