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