1. 关于 ToolStrip 控件
ToolStrip 控件异常强大,从 .NET 2.0 开始引入,可直接作为工具栏,它还是 MenuStrip, ContextMenuStrip 和 StatusStrip 的可扩展基类,而 ToolStripItem 表示这些控件的子项的基类。这些控件替换了早期版本 (.NET 1.x) 中的 ToolBar, MenuStrip, ContextMenuStrip 和 StatusBar 控件,实现了统一的继承体系、事件处理与扩展模式,增加了许多功能。
图1 ToolStrip 对象模型
2. 关于 ToolStripItem 对象
ToolStripItem 表示可以包含在 ToolStrip 中的元素,如按钮、组合框、文本框或标签。ToolStrip 类管理这些元素的绘制以及键盘与鼠标输入(包括拖放输入),ToolStripItem 类管理这些元素内部的事件和布局。ToolStripItem 具有如下特点:
- ToolStripItem 是抽象类,其子类或者从 ToolStripItem 直接继承,或者通过 ToolStripControlHost 或 ToolStripDropDownItem 从 ToolStripItem 间接继承。
- ToolStripItem 继承自 Component 而不从 Control 继承,必须包含在 ToolStrip、MenuStrip、StatusStrip 或 ContextMenuStrip 中,而不能直接添加到窗体中。
- ToolStripItem 不能有多个父级 ToolStrip,必须创建 ToolStripItem 的副本并将该副本添加到其他 ToolStrip 控件中。
图2 ToolStripItem 对象模型
3. 关于 ToolStripContainer 控件
ToolStripContainer 类似于 SplitContainer,但具有上、下、左、右以及中间5个分区。四侧面板是 ToolStripPanel 的实例,中间面板是 ToolStripContentPanel 的实例。无法移除侧面板,但可以将它们各自的 TopToolStripPanelVisible、BottomToolStripPanelVisible、LeftToolStripPanelVisible 和 RightToolStripPanelVisible 属性设置为 false 来隐藏它们。既不能移除也不能隐藏 ToolStripContentPanel。可以在侧面板中排列一个或多个 ToolStrip、MenuStrip 或 StatusStrip 控件,并且可以将中间面板用于主工作区,放置其他 Windows 控件。
- ToolStripContainer 常见使用场景是,将其 Dock 到父窗体,隐藏左右面板,上面板放 MenuStrip 和 ToolStrip,下面板放 StatusStrip,中间作为主工作区。
- ToolStripContainer 四个侧面板 ToolStripPanel 内的 ToolStrip MenuStrip 可自由浮动,支持拖拽。
- ToolStripContainer 总是父窗体的最顶层控件,而中间内容面板无法隐