ToolStrip 技术摘要

本主题概述了 ToolStrip 控件及支持其使用的类的相关信息。

ToolStrip 控件及其关联的类提供完整的解决方案用于创建工具栏、状态栏和菜单。

命名空间

System.Windows.Forms

背景

借助 ToolStrip 控件及其关联的类,可创建外观和行为一致且专业的高级工具栏功能。 与以前的控件相比,ToolStrip 控件和类提供了以下改进:

  • 更加一致的事件模型。

  • 更加一致的设计时行为,包含任务列表和项集合编辑器。

  • 具有 ToolStripManagerToolStripRenderer 的自定义呈现。

  • 具有 ToolStripContainerToolStripPanel 的内置漂浮(停靠时共享工具区域中的水平或垂直空间)。

  • 在设计时和运行时重新排列具有 AllowItemReorder 属性的项。

  • 借助 CanOverflow 属性将项重新定位到溢出菜单。

  • 可借助 ToolStripContainerToolStripPanelToolStripContentPanel 完全配置控件位置。

  • 使用 ToolStripControlHost 承载 ToolStrip、传统或自定义控件。

  • 使用 ToolStripPanel 合并 ToolStrip 控件。

ToolStripMenuStripContextMenuStripStatusStrip 的可扩展基类。 这些控件是继承常见行为和事件处理的 ToolStripItem 容器,已经过扩展以使每个实现均处理适合的行为。 下表列出了从 ToolStripItem 派生的控件。 基础 ToolStrip 类处理这些控件的绘制、用户输入和拖放事件。

ToolStripMenuStripContextMenuStripStatusStrip 控件替换以前的工具栏、菜单、快捷菜单和状态栏控件(尽管这些控件将保留用于向后兼容)。

ToolStrip 类简介

下表列出了按技术范围分组的 ToolStrip 类。

技术范围
工具栏、状态和菜单容器 ToolStrip

MenuStrip

ContextMenuStrip

StatusStrip

ToolStripDropDownMenu
ToolStrip 项 ToolStripLabel

ToolStripDropDownItem

ToolStripMenuItem

ToolStripButton

ToolStripStatusLabel

ToolStripSeparator

ToolStripControlHost

ToolStripComboBox

ToolStripTextBox

ToolStripProgressBar

ToolStripDropDownButton

ToolStripSplitButton
位置 ToolStripContainer

ToolStripContentPanel

ToolStripPanel
演示和呈现 ToolStripManager

ToolStripRenderer

ToolStripProfessionalRenderer

ToolStripRenderMode

ToolStripManagerRenderMode

ToolStrip 设计时功能

ToolStrip 系列的控件提供了一组丰富的工具和模板,用于就地编辑和定义用户界面基础,以便快速创建工作应用程序。

任务对话框

在 Visual Studio 中,单击设计器中控件上的智能标记会显示任务列表,用于方便访问很多常用命令。

项集合编辑器

在 Visual Studio 中,当单击任务列表上的“编辑项”或在快捷菜单中右键单击控件并选择“编辑项”时,将显示控件的集合编辑器。 集合编辑器用于添加、删除和重新排序控件中所包含的项。 还可以查看和更改控件及其内含项的属性。

承载控件

ToolStripControlHost 类为 ToolStripComboBoxToolStripTextBoxToolStripProgressBar 控件提供了内置包装。 还可以在 ToolStripControlHost 中承载任何其他现有控件或 COM 控件。

有关控件承载的示例,请参阅如何:使用 ToolStripControlHost 包装 Windows 窗体控件

渲染

ToolStrip 类实现明显不同于其他 Windows 窗体控件的呈现方案。 借助此方案,可轻松地应用样式和主题。

若要将样式应用到 ToolStrip 及其内含的所有 ToolStripItem 对象,无需处理每一项的 Paint 事件。 而是将 RenderMode 属性设置为其中一个 ToolStripRenderMode 值,而不是 Custom。 或者,可将 Renderer 直接设置为从 ToolStripRenderer 类继承的任意类。 设置此属性将自动设置 RenderMode

可以通过将 RenderMode 设置为 ManagerRenderMode 并将 RenderModeRenderer 属性分别设置为想要的 ToolStripManagerRenderModeToolStripRenderer 值,可以将同一样式应用到同一应用程序中的多个 ToolStrip 对象中。

有关呈现示例,请参阅如何:在 Windows 窗体中为 ToolStrip 控件创建和设置自定义呈现器

样式和主题

ToolStrip 和关联的类提供一种了支持视觉样式和自定义外观且无需重写每个项的 OnPaint 方法的简单方式。 使用 DisplayStyleRenderModeRenderer 属性。

漂浮和停靠

可以飘浮、停靠或绝对定位 ToolStrip 控件。 ToolStrip 项由容器的 LayoutEngine 进行布局。

漂浮指工具栏共享水平或垂直空间的功能。 Windows 窗体可具有 ToolStripContainer,其中窗体的左侧、右侧、顶部和底部均带有用于定位和漂浮 ToolStripMenuStripStatusStrip 控件的面板。 如果将多个 ToolStrip 控件放置在 ToolStripContainer 左侧或右侧,它们会垂直堆叠。 如果将其放置在 ToolStripContainer 顶部或底部,则水平堆叠。 可使用 ToolStripContainer 的中央 ToolStripContentPanel 将传统控件放置在窗体上。

任何或所有 ToolStripContainer 控件都可在设计时选择且可删除。 ToolStripContainer 可扩展、可折叠的,并可调整大小适应其包含的控件。

停靠是指定控件在窗体左侧、右侧、顶部或底部的简单位置

相对于停靠,漂浮的优势是 ToolStripMenuStripStatusStrip 控件可与其他控件共享水平和垂直空间。

换用漂浮时,大部分的 ToolStrip 控件可与其他控件一样停靠在窗体。 还可以通过将其从 ToolStripContainer 移除并将 Dock 属性设置为 None 自由指定 ToolStrip 控件在窗体上的位置,或者可通过设置各自的 Location 属性指定它的绝对位置。 请参阅如何:将 ToolStrip 从 ToolStripContainer 移到窗体上

为提高灵活性(特别是对于多文档界面 (MDI) 应用程序)或者在无需使用 ToolStripContainer 的情况下,请使用一个或多个 ToolStripPanel 控件。 ToolStripPanel 提供可停靠空间,用于定位和漂浮 ToolStrip 控件(而不是传统控件)。 默认情况下,ToolStripPanel 不会显示在设计器的“工具箱”中,但可以右键单击“工具箱”将它放在此处,然后单击“选择项”。 与任何其他类一样,也可以编程方式访问 ToolStripPanel

ToolStripMenuStripStatusStrip 允许项溢出。 这与这些项在 Microsoft Office 工具栏中的操作方式很类似。

另请参阅