ToolStrip 技术摘要

本主题总结了有关 ToolStrip 控件以及支持其使用的类的信息。

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

命名空间

System.Windows.Forms

背景

使用 ToolStrip 控件及其关联的类,可以创建具有一致且专业外观和行为的高级工具栏功能。 ToolStrip 控件和类对以前的控件提供以下改进:

  • 更一致的事件模型。

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

  • 使用 ToolStripManagerToolStripRenderer进行自定义渲染。

  • 内置漂流(在停靠时在工具区域中共享水平或垂直空间)与 ToolStripContainerToolStripPanel

  • 使用 AllowItemReorder 属性对项进行设计时和运行时重新排序。

  • 使用 CanOverflow 属性将项重定位到溢出菜单(overflow menu)。

  • 完全可配置的控制位置包括 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 Design-Time 特性

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

任务对话框

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

项集合编辑器

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

托管控件

ToolStripControlHost 类为 ToolStripComboBoxToolStripTextBoxToolStripProgressBar 控件提供内置包装器。 你还可以在 ToolStripControlHost中托管任何现有控件或其他 COM 控件。

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

渲染

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

若要将样式应用于 ToolStrip 及其包含的所有 ToolStripItem 对象,不必处理每个项的 Paint 事件。 相反,可以将 RenderMode 属性设置为除 Custom以外的 ToolStripRenderMode 值之一。 或者,可以将 Renderer 直接设置为任意从 ToolStripRenderer 类继承的类。 设置此属性会自动设置 RenderMode

可以将同一样式应用于同一应用程序中的多个 ToolStrip 对象,方法是将 RenderMode 设置为 ManagerRenderMode,并将 RenderModeRenderer 属性分别设置为所需的 ToolStripManagerRenderModeToolStripRenderer 值。

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

样式和主题

ToolStrip 和相关类提供了一种简单的方法来支持视觉样式和自定义外观,这些并不需要为每个项目重写 OnPaint 方法。 使用 DisplayStyleRenderModeRenderer 属性。

漂流和停靠

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

漂流 是工具栏共享水平或垂直空间的能力。 Windows 窗体可以包含一个 ToolStripContainer,其左、右、上和下侧面板用于定位和安排 ToolStripMenuStripStatusStrip 控件。 将多个 ToolStrip 控件放在左侧或右侧 ToolStripContainer上时,会垂直堆叠。 当您将它们放置在顶部或底部 ToolStripContainer时,它们会水平堆叠。 可以使用 ToolStripContainer 的中心 ToolStripContentPanel 在窗体上定位传统控件。

任何或所有 ToolStripContainer 控件都可以在设计时直接选择,并且可以删除。 ToolStripContainer 可展开和折叠,并根据其包含的控件调整自身大小。

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

在停靠上漂流的优点是,ToolStripMenuStripStatusStrip 控件可以与其他控件共享水平或垂直空间。

大多数 ToolStrip 控件可以像其他控件一样停靠在窗体上,而不是使用浮动。 还可以通过将 ToolStrip 控件从 ToolStripContainer 中删除并将其 Dock 属性设置为 None,来自由指定其在窗体上的位置;或者,通过设置相应的 Location 属性来指定其绝对位置。 请参阅 操作指南:如何将 ToolStrip 从 ToolStripContainer 移动到窗体

使用一个或多个 ToolStripPanel 控件来提高更大的灵活性,特别适用于多文档界面(MDI)应用程序,或者在不需要 ToolStripContainer的情况下。 ToolStripPanel 提供了一个用于定位和组织 ToolStrip 控件的可停靠空间,但不适用于传统控件。 默认情况下,ToolStripPanel 不会出现在设计器 工具箱中,但可以通过右键单击 工具箱将其放在其中,然后单击 选择项。 还可以像任何其他类一样以编程方式访问 ToolStripPanel

ToolStripMenuStripStatusStrip 允许项目溢出。 这种方式类似于这些项目在 Microsoft Office 工具栏上的行为方式。

另请参阅