更新:2007 年 11 月
System.Windows.Forms 命名空间支持多文档界面 (MDI) 应用程序,MenuStrip 控件支持菜单合并。MDI 窗体还可支持 ToolStrip 控件。
本演练演示如何将 ToolStripPanel 控件用于 MDI 窗体。该窗体还支持与子菜单的菜单合并。本演练演示了以下任务:
- 创建 Windows 窗体项目。 
- 创建窗体的主菜单。菜单的实际名称将有所不同。 
- 将 ToolStripPanel 控件添加到“工具箱”中。 
- 创建子窗体。 
- 按 Z 顺序排列 ToolStripPanel 控件。 
完成这些步骤之后,您会得到一个支持菜单合并和可移动 ToolStrip 控件的 MDI 窗体。
若要将本主题中的代码作为一个单独的清单进行复制,请参见 如何:创建合并了菜单并具有 ToolStrip 控件的 MDI 窗体。
| .gif) 说明: | 
|---|
| 显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 | 
先决条件
若要完成本演练,您需要:
- 足以在安装了 Visual Studio 的计算机上创建和运行 Windows 窗体应用程序项目的权限。
创建项目
第一步是创建项目并设置窗体。
创建项目
- 创建名为“MdiForm”的 Windows 应用程序项目。 - 有关更多信息,请参见如何:创建 Windows 应用程序项目。 
- 在 Windows 窗体设计器中,选择该窗体。 
- 在“属性”窗口中,将 IsMdiContainer 的值设置为 true。 
创建主菜单
父 MDI 窗体包含主菜单。主菜单有一个名为“窗口”的菜单项。使用“窗口”菜单项,可以创建子窗体。来自子窗体的菜单项将合并到主菜单中。
创建主菜单
- 从“工具箱”中将一个 MenuStrip 控件拖动到窗体上。 
- 向 MenuStrip 控件添加一个 ToolStripMenuItem,并将其命名为“窗口”。 
- 选择 MenuStrip 控件。 
- 在“属性”窗口中,将 MdiWindowListItem 属性的值设置为 ToolStripMenuItem1。 
- 向“窗口”菜单项添加一个子项,并将其命名为“新建”。 
- 在“属性”窗口中,单击“事件”。 
- 双击 Click 事件。 - Windows 窗体设计器为 Click 事件生成一个事件处理程序。 
- 将下面的代码插入到事件处理程序中。 - ' This method creates a new ChildForm instance ' and attaches it to the MDI parent form. Private Sub newToolStripMenuItem_Click( _ ByVal sender As Object, _ ByVal e As EventArgs) _ Handles newToolStripMenuItem.Click Dim f As New ChildForm() f.MdiParent = Me f.Text = "Form - " + Me.MdiChildren.Length.ToString() f.Show() End Sub- // This method creates a new ChildForm instance // and attaches it to the MDI parent form. private void newToolStripMenuItem_Click(object sender, EventArgs e) { ChildForm f = new ChildForm(); f.MdiParent = this; f.Text = "Form - " + this.MdiChildren.Length.ToString(); f.Show(); }
将 ToolStripPanel 控件添加到工具箱中
将 MenuStrip 控件用于 MDI 窗体时,必须具有 ToolStripPanel 控件。必须在“工具箱”中添加 ToolStripPanel 控件,以便在 Windows 窗体设计器中构建 MDI 窗体。
将 ToolStripPanel 控件添加到工具箱中
- 打开“工具箱”并单击“所有 Windows 窗体”选项卡,以显示可用的 Windows 窗体控件。 
- 单击右键打开快捷菜单,再选择“选择项”。 
- 在“选择工具箱项”对话框中,向下滚动“名称”列,直到找到“ToolStripPanel”。 
- 选择“ToolStripPanel”旁边的复选框并单击“确定”。 - ToolStripPanel 控件将出现在“工具箱”中。 
创建子窗体
在此过程中,您将定义一个单独的子窗体类,其中包含它自己的 MenuStrip 控件。此窗体的菜单项将与父窗体的菜单项合并。
定义子窗体
- 向项目中添加一个名为 ChildForm 的新窗体。 - 有关更多信息,请参见如何:向项目添加 Windows 窗体。 
- 从“工具箱”中将一个 MenuStrip 控件拖动到该子窗体上。 
- 单击 MenuStrip 控件的智能标记标志符号 ( .gif) ),然后选择“编辑项”。 ),然后选择“编辑项”。
- 在“项集合编辑器”对话框中,向子菜单中添加一个名为 ChildMenuItem 的新 ToolStripMenuItem。 - 有关更多信息,请参见 ToolStrip 项集合编辑器。 
测试窗体
测试窗体
- 按 F5 编译并运行窗体。 
- 单击“窗口”菜单项打开菜单,然后单击“新建”。 - 在该窗体的 MDI 工作区中将创建一个新的子窗体。该子窗体的菜单将与主菜单合并。 
- 关闭子窗体。 - 该子窗体的菜单从主菜单中移除。 
- 单击“新建”若干次。 - 因为指定了 MenuStrip 控件的 MdiWindowListItem 属性,所以“窗口”菜单项下会自动列出子窗体。 
添加 ToolStrip 支持
在此过程中,将向 MDI 父窗体添加四个 ToolStrip 控件。每个 ToolStrip 控件均被添加到停靠于窗体边缘的一个 ToolStripPanel 控件中。
向 MDI 父窗体添加 ToolStrip 控件
- 从“工具箱”中将一个 ToolStripPanel 控件拖动到窗体上。 
- 选择了 ToolStripPanel 控件之后,在“工具箱”中双击 ToolStrip 控件。 - 在 ToolStripPanel 控件中会创建一个 ToolStrip 控件。 
- 选择 ToolStripPanel 控件。 
- 在“属性”窗口中,将控件的 Dock 属性值更改为 Left。 - ToolStripPanel 控件将停靠于窗体的左侧,位于主菜单的下方。调整 MDI 工作区的大小以容纳该 ToolStripPanel 控件。 
- 重复步骤 1 到 4。 - 将新的 ToolStripPanel 控件停靠在窗体的顶部。 - ToolStripPanel 控件停靠于主菜单的下方,但位于第一个 ToolStripPanel 控件的右侧。此步骤说明 Z 顺序对于正确放置 ToolStripPanel 控件的重要性。 
- 重复步骤 1 到步骤 4 以另外添加两个 ToolStripPanel 控件。 - 将这两个新的 ToolStripPanel 控件分别停靠于窗体的右侧和底部。 
按照 Z 顺序排列 ToolStripPanel 控件
ToolStripPanel 控件在 MDI 窗体上的停靠位置由该控件在 Z 顺序中的位置确定。在“文档大纲”窗口中可以方便地排列控件的 Z 顺序。
按照 Z 顺序排列 ToolStripPanel 控件
- 单击“视图”菜单中的“其他窗口”,再选择“文档大纲”。 - 在上面的过程中,ToolStripPanel 控件的排列是非标准排列。这是因为 Z 顺序不正确。请使用“文档大纲”窗口更改控件的 Z 顺序。 
- 在“文档大纲”窗口中,选择“ToolStripPanel4”。 
- 重复单击向下箭头按钮,直到将“ToolStripPanel4”置于列表底部。 - “ToolStripPanel4”控件被停靠于窗体的底部,位于其他控件的下方。 
- 选择“ToolStripPanel2”。 
- 单击向下箭头一次,将控件定位在列表中的第三列。 - “ToolStripPanel2”控件停靠于窗体的顶部,位于主菜单之下,其他控件之上。 
- 在“文档大纲”窗口中选择不同的控件并将它们移动到 Z 顺序中的不同位置。请注意 Z 顺序对放置停靠控件的影响。使用 Ctrl-Z 或“编辑”菜单中的“撤消”来撤消所做的更改。 
检查点
测试窗体
- 按 F5 编译并运行窗体。 
- 单击 ToolStrip 控件的手柄并将控件拖动到窗体中的其他位置。 - 可以将 ToolStrip 控件从一个 ToolStripPanel 控件拖动到另一个控件。 
后续步骤
在本演练中,您已经创建了包含 ToolStrip 控件和菜单合并功能的 MDI 父窗体。ToolStrip 系列控件有很多其他用途:
- 使用 ContextMenuStrip 来创建控件的快捷菜单。有关更多信息,请参见 ContextMenu 组件概述(Windows 窗体)。 
- 创建一个自动填充有标准菜单的窗体。有关更多信息,请参见 演练:向窗体提供标准菜单项。 
- 赋予 ToolStrip 控件专业的外观。有关更多信息,请参见 如何:为应用程序设置 ToolStrip 呈现程序。 
请参见
任务
如何:将 MenuStrip 插入 MDI 下拉菜单(Windows 窗体)