我正在用c#开发一个MDI应用程序。组合两个MenuStrip时遇到问题:
我的父家长Form
包含MenuStrip parentMenu
和一些ToolStripMenuItem
元素:Option1
,Option2
。
然后我生了一个Form
个孩子MenuStrip parentMenu
和两个ToolStripMenuItem
元素:Option1
和OtherOption
。这些合并属性仅适用于Opcion1
并附加OtherOption
现在,问题出现了:当显示子表单并且组合了两个MenuStrip
时,事件parentMenu.ItemAdded被tiggrered,因为OtherOption
被添加到parentMenu.Items
集合。 Option1
不是这种情况。请注意,Option1.DropDownItems
(在子表单中)可能存在父表单中Option1.DropDownItems
中不存在的某些元素。
如何收到有关这些项目的通知?
(为了清楚起见:假设parentMenu.Items
只包含ToolStripMenuItem Option1
,其中只包含ToolStripMenuItem
,比如'optionA'。假设childMenu.Items
只包含ToolStripMenuItem Option1
1}}只包含ToolStripMenuItem optionB
。当两个菜单合并时,我如何得到关于项目选项B被添加到父亲的通知?或者如何通知两个菜单合并,知道哪些元素是新的? )。
答案 0 :(得分:0)
“MenuStrip合并将菜单项从一个ToolStrip移动到另一个ToolStrip而不是克隆它们,就像MainMenu一样。”请参阅here。
因为它正在移动它们而不是克隆它们,请尝试ToolStripItem
上的OwnerChanged
事件。为您的每件商品加入此活动,当它转移到另一个工具条时会通知您。