ToolStrip 技术摘要

更新:2007 年 11 月

本主题概括介绍 ToolStrip 控件以及支持使用该控件的类的相关信息。

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

命名空间

System.Windows.Forms

背景

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

  • 更为一致的事件模型。

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

  • 通过 ToolStripManager 和 ToolStripRenderer 进行自定义呈现。

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

  • 通过 AllowItemReorder 属性在设计时和运行时对项重新排序。

  • 通过 CanOverflow 属性将项重定位到溢出菜单。

  • 具有 ToolStripContainer、ToolStripPanel 和 ToolStripContentPanel 的完全可配置的控件位置。

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

  • 使用 ToolStripPanel 合并 ToolStrip 控件。

ToolStrip 是 MenuStrip、ContextMenuStrip 和 StatusStrip 的可扩展基类。这些控件是 ToolStripItem 容器,它们继承了常见的行为和事件处理,并进行了扩展,使每个实现都可以处理与它相应的行为。下表列出了从 ToolStripItem 派生的控件。基 ToolStrip 类处理这些控件的绘制、用户输入和拖放事件。

ToolStrip、MenuStrip、ContextMenuStrip 和 StatusStrip 控件取代了以前的工具栏、菜单、快捷菜单和状态栏控件,不过为了向后兼容还是保留了这些控件。

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 中,单击设计器中的控件上的智能标记可以显示一个任务列表,通过它可方便地访问许多常用的命令。

Topic Location
“StatusStrip 任务”对话框 Windows 窗体编程
“MenuStrip 任务”对话框 Windows 窗体编程
“ContextMenuStrip 任务”对话框 Windows 窗体编程
“ToolStripContainer 任务”对话框 Windows 窗体编程
“ToolStrip 任务”对话框 Windows 窗体编程
“MenuStrip 任务”对话框 Windows 窗体编程
“ToolStrip 任务”对话框 Windows 窗体编程
“ContextMenuStrip 任务”对话框 Windows 窗体编程
“StatusStrip 任务”对话框 Windows 窗体编程
“ToolStripContainer 任务”对话框 Windows 窗体编程
“MenuStrip 任务”对话框 Windows 窗体编程
“ToolStrip 任务”对话框 Windows 窗体编程
“ContextMenuStrip 任务”对话框 Windows 窗体编程
“StatusStrip 任务”对话框 Windows 窗体编程
“ToolStripContainer 任务”对话框 Windows 窗体编程
“MenuStrip 任务”对话框 dv_ManCli
“ToolStrip 任务”对话框 dv_ManCli
“ContextMenuStrip 任务”对话框 dv_ManCli
“StatusStrip 任务”对话框 dv_ManCli
“ToolStripContainer 任务”对话框 dv_ManCli
“MenuStrip 任务”对话框 dv_ManCli
“ToolStrip 任务”对话框 dv_ManCli
“ContextMenuStrip 任务”对话框 dv_ManCli
“StatusStrip 任务”对话框 dv_ManCli
“ToolStripContainer 任务”对话框 dv_ManCli

项集合编辑器

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

Topic Location
ContextMenuStrip 项集合编辑器 Windows 窗体编程
ToolStrip 项集合编辑器 Windows 窗体编程
MenuStrip 项集合编辑器 Windows 窗体编程
StatusStrip 项集合编辑器 Windows 窗体编程
MenuStrip 项集合编辑器 Windows 窗体编程
StatusStrip 项集合编辑器 Windows 窗体编程
ContextMenuStrip 项集合编辑器 Windows 窗体编程
ToolStrip 项集合编辑器 Windows 窗体编程
MenuStrip 项集合编辑器 Windows 窗体编程
StatusStrip 项集合编辑器 Windows 窗体编程
ContextMenuStrip 项集合编辑器 Windows 窗体编程
ToolStrip 项集合编辑器 Windows 窗体编程
MenuStrip 项集合编辑器 dv_ManCli
StatusStrip 项集合编辑器 dv_ManCli
ContextMenuStrip 项集合编辑器 dv_ManCli
ToolStrip 项集合编辑器 dv_ManCli
MenuStrip 项集合编辑器 dv_ManCli
StatusStrip 项集合编辑器 dv_ManCli
ContextMenuStrip 项集合编辑器 dv_ManCli
ToolStrip 项集合编辑器 dv_ManCli

承载控件

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

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

呈现

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

若要将某个样式应用于 ToolStrip 及其包含的所有 ToolStripItem 对象,您无需对每个项都处理 Paint 事件。您可以将 RenderMode 属性设置为一个除 Custom 以外的 ToolStripRenderMode 值。另外,您还可以直接将 Renderer 设置为从 ToolStripRenderer 类继承的任何类。设置此属性将自动设置 RenderMode

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

有关呈现的示例,请参见如何:在 Windows 窗体中为 ToolStrip 控件创建和设置自定义呈现器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 工具栏中的行为方式。

请参见

任务

ToolStrip 示例

ToolStrip 自定义示例

统一命令示例

概念

ToolStrip 控件结构

参考

ToolStrip 控件概述(Windows 窗体)