演练:创建具有菜单合并功能和 ToolStrip 控件的 MDI 窗体
System.Windows.Forms 命名空间支持多文档界面 (MDI) 应用程序,MenuStrip 控件支持菜单合并。 MDI 窗体还可支持 ToolStrip 控件。
本演练演示如何将 ToolStripPanel 控件用于 MDI 窗体。 该窗体还支持与子菜单的菜单合并。 本演练演示了以下任务:
创建 Windows 窗体项目。
创建窗体的主菜单。 菜单的实际名称将有所不同。
将 ToolStripPanel 控件添加到**“工具箱”**中。
创建子窗体。
按 Z 顺序排列 ToolStripPanel 控件。
完成这些步骤之后,您会得到一个支持菜单合并和可移动 ToolStrip 控件的 MDI 窗体。
若要将本主题中的代码作为一个单独的清单进行复制,请参见 如何:创建合并了菜单并具有 ToolStrip 控件的 MDI 窗体。
提示
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。 若要更改设置,请在“工具”菜单上选择“导入和导出设置”。 有关更多信息,请参见 使用设置。
系统必备
若要完成本演练,您需要:
- 足以在安装了 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 控件的智能标记标志符号 (),然后选择**“编辑项”**。
在**“项集合编辑器”**对话框中,向子菜单中添加一个名为 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 窗体)