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 Design-Time 功能

控件 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属性分别设置为您需要的ToolStripManagerRenderMode对象或ToolStripRenderer值,来将相同样式应用于多个ToolStrip对象。

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

样式和主题

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

漂流和停靠

你可以浮动、停靠或绝对定位 ToolStrip 控件。 ToolStrip 项按照 LayoutEngine 容器的布局方式排列。

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

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

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

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

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

使用一个或多个ToolStripPanel控件来提高灵活性,尤其是对于多文档界面应用程序(MDI),或者如果你不需要ToolStripContainer控件。 A ToolStripPanel 提供了一个可停靠的空间用于定位和移动 ToolStrip 控件,但不支持传统控件。 默认情况下, ToolStripPanel 设计器 工具箱中不显示,但你可以通过右键单击工具箱将其放在该 工具箱中,然后单击“ 选择项”。 您还可以像访问任何其他类一样,以编程方式访问 ToolStripPanel

ToolStrip MenuStripStatusStrip使项目溢出。 这类似于这些项在 office 工具栏Microsoft的行为方式。

另请参阅