如何:将 MenuStrip 插入 MDI 下拉菜单(Windows 窗体)
在某些应用程序中,多文档界面(MDI)子窗口的类型可以不同于 MDI 父窗口。 例如,MDI 父窗口可能为电子表格,而 MDI 子窗口可能为图表。 在这种情况下,由于激活了不同类型的 MDI 子窗口,你想用 MDI 子菜单上的内容更新 MDI 父菜单的内容。
以下过程使用 IsMdiContainer、AllowMerge、MergeAction和 MergeIndex 属性将 MDI 子菜单中的一组菜单项插入到 MDI 父菜单的下拉菜单中。 关闭 MDI 子窗口会从 MDI 父级中删除插入的菜单项。
将 MenuStrip 插入 MDI 下拉菜单
创建一个窗体并将其 IsMdiContainer 属性设置为
true
。将 MenuStrip 添加到
Form1
,并将 MenuStrip 的 AllowMerge 属性设置为true
。将三个子菜单项添加到
&File
菜单项,并将其 Text 属性设置为&Open
、&Import from
和E&xit
。将两个子菜单项添加到
&Import from
子菜单项,并将其 Text 属性设置为&Word
和&Excel
。将窗体添加到项目中,向窗体添加 MenuStrip,并将
Form2
MenuStrip 的 AllowMerge 属性设置为true
。按以下顺序将子菜单项添加到
Form2
的&File
菜单中:ToolStripSeparator、&Save
、Save and &Close
和另一个 ToolStripSeparator。设置
Form2
菜单项的 MergeAction 和 MergeIndex 属性,如下表所示。Form2 菜单项 MergeAction 值 MergeIndex 值 文件 MatchOnly -1 分隔符 Insert 2 保存 Insert 3 保存并关闭 Insert 4 分隔符 Insert 5 为
&Open
ToolStripMenuItem的 Click 事件创建事件处理程序。在事件处理程序中,插入类似于以下代码示例的代码,以创建和显示
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);
编译代码
此示例需要:
两个名为
Form1
和Form2
的 Form 控件。Form1
上名为menuStrip1
的 MenuStrip 控件和Form2
上名为menuStrip2
的 MenuStrip 控件。对 System 和 System.Windows.Forms 程序集的引用。