在某些应用程序中,多文档界面 (MDI) 子窗口的类型可以不同于 MDI 父窗口。 例如,MDI 父窗口可能为电子表格,而 MDI 子窗口可能为图表。 在这种情况下,由于激活了不同类型的 MDI 子窗口,你想用 MDI 子菜单上的内容更新 MDI 父菜单的内容。
下面的过程使用 IsMdiContainer、AllowMerge、MergeAction 和 MergeIndex 属性将 MDI 子菜单附加到 MDI 父菜单。 关闭 MDI 子窗口可将附加的菜单从 MDI 父窗口中删除。
另请参阅多文档界面 (MDI) 应用程序。
将菜单项附加到 MDI 父菜单
创建一个窗体并将其 IsMdiContainer 属性设置为
true
。将 MenuStrip 添加到
Form1
并将 AllowMerge 的 MenuStrip 属性设置为true
。将子菜单项添加到
&File
菜单项,并将其 Text 属性设置为&Open
。将窗体添加到项目,将 MenuStrip 添加该窗体,并将 AllowMerge
Form2
的 MenuStrip 属性设置为true
。将两个子菜单项添加到
&Special
菜单项,并将其 Text 属性分别设置为Command&1
和Command&2
。将 MergeAction、
&Special
和Command&1
菜单项的Command&2
属性设置为 Append。为 Click
&Open
的 ToolStripMenuItem 事件创建一个事件处理程序。在事件处理程序内,插入类似于以下示例代码的代码,从而将
Form2
的新实例创建和显示为Form1
的 MDI 子级。Private Sub openToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles openToolStripMenuItem.Click Dim NewMDIChild As New Form2() 'Set the parent form of the child window. NewMDIChild.MdiParent = Me 'Display the new form. NewMDIChild.Show() End Sub
private void openToolStripMenuItem_Click(object sender, EventArgs e) { Form2 newMDIChild = new Form2(); // Set the parent form of the child window. newMDIChild.MdiParent = this; // Display the new form. newMDIChild.Show(); }
将类似于以下示例代码的代码放在
&Open
ToolStripMenuItem 中以注册事件处理程序。Private Sub openToolStripMenuItem_Click(sender As Object, e As _ EventArgs) Handles openToolStripMenuItem.Click
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
编译代码
此示例需要:
名为 Form 和
Form1
的两个Form2
控件。MenuStrip 上名为
Form1
的menuStrip1
控件和 MenuStrip 上名为Form2
的menuStrip2
控件。对 System 和 System.Windows.Forms 程序集的引用。