合并MDI窗口的菜单条项

far*_*iba 4 c# mdiparent mdichild menuitem

如何将具有相同菜单名称的父表单和子表单的菜单项合并?

Ter*_*ver 12

将菜单项的MergeAction设置为"MatchOnly".

添加

因为这可能有点棘手,我将添加一个步骤列表来做一个简单的例子.

  • 创建一个新的Windows窗体应用程序.
  • 添加新的Windows窗体并将其名称保留为Form2.
  • 打开Form1设计器(如果尚未打开).
  • 单击表单并将Form1的IsMdiContainer设置为True.
  • 打开工具箱并将MenuStrip添加到Form1.
  • 在"在此处键入"框中键入&File
  • 在子项"在此处键入"框中键入A.
  • 在子项"在此处键入"框中键入B.
  • 您的MDI容器(Form1)应该有一个文件菜单,其中包含项目A和B.
  • 双击A项以添加单击处理程序.
  • 添加new Form2 { MdiParent = this }.Show();到处理程序方法.
  • 打开Form2设计师.
  • 打开工具箱并将MenuStrip添加到Form2.
  • 注意:有关Form2 MenuStrip上的Visible属性的信息,请参阅下文,此时可以将其设置为False.
  • 在"在此处键入"框中键入&File
  • 在子项"Type Here"框中键入C.
  • 你的MDI子(Form2)应该有一个带有项目C的文件菜单.
  • 单击File菜单项,然后在Properties窗口中将MergeAction设置为MatchOnly.
  • 运行程序.

请注意,"文件"菜单项为A和B.

单击文件 - > A以创建子窗口.

请注意,容器上的"文件"菜单现在包含A,B和C.

另请注意,子项上的"文件"菜单已存在,但没有项目.这是因为C被合并了.

您现在可以将子菜单的MenuStrip.Visible属性设置为False,以便子项不显示菜单.在设计菜单时将其保留为True是很方便的,这样您就可以验证所有子菜单项是否已正确合并(它们将从子菜单中消失).

您可以使用MergeIndex属性来控制子项如何合并到容器中.