ToolStrip 技術摘要

更新:2007 年 11 月

這個主題摘要了 ToolStrip 控制項及支援該控制項用法的類別等相關資訊。

ToolStrip 控制項及其相關類別 (Class) 提供了建立工具列、狀態列和功能表的完整解決方案。

命名空間

System.Windows.Forms

背景資料

透過 ToolStrip 控制項及其相關類別,您可以建立具有一致且專業外觀和行為的進階工具列功能。ToolStrip 控制項及相關類別針對之前的控制項提供了下列改進:

  • 更具有一致性的事件模型。

  • 更具有一致性的設計階段行為,包含工作清單和項目集合編輯器在內。

  • 使用 ToolStripManager 和 ToolStripRenderer 的自訂呈現。

  • 使用 ToolStripContainer 和 ToolStripPanel 的內建浮動定位 (停駐時共用工具區內的水平或垂直空間)。

  • 在設計階段和執行階段使用 AllowItemReorder 屬性重新排列項目。

  • 使用 CanOverflow 屬性將項目重新配置到溢位功能表。

  • 控制項位置全部都可以使用 ToolStripContainer、ToolStripPanel 和 ToolStripContentPanel 來設定。

  • 可使用 ToolStripControlHost 裝載 (Host) 舊式或自訂的 ToolStrip 控制項。

  • 可使用 ToolStripPanel 合併 ToolStrip 控制項。

ToolStrip 是 MenuStrip、ContextMenuStrip 和 StatusStrip 的可擴充基底類別。這些控制項都是會繼承一般行為和事件處理的 ToolStripItem 容器 (Container),擴充後每項實作 (Implementation) 都可以針對適合的行為加以處理。衍生自 ToolStripItem 的控制項列在下表中。ToolStrip 基底類別可處理這些控制項的繪製、使用者輸入和拖放事件。

ToolStrip、MenuStrip、ContextMenuStrip 和 StatusStrip 控制項取代了先前的工具列、功能表、快速鍵功能表和狀態列控制項,不過為了提供回溯相容性 (Backward Compatibility),這些控制項都將予以保留。

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 系列控制項在就地編輯 (In-Place Editing) 和定義使用者介面基礎方面提供了非常豐富的工具集和範本,可以讓您很快地建立工作應用程式。

工作對話方塊

在 Visual Studio 中,按一下設計工具中控制項上的智慧標籤便會顯示工作清單,可方便您存取許多常用的命令。

項目集合編輯器

在 Visual Studio 中,當您按一下工作清單上的 [編輯項目],或者以滑鼠右鍵按一下控制項並選取快速鍵功能表中的 [編輯項目] 時,便會顯示控制項的集合編輯器。集合編輯器可以讓您加入、移除和重新排列控制項所包含的項目。您也可以在這裡檢視和變更控制項的屬性以及控制項的項目。

裝載控制項

ToolStripControlHost 類別提供 ToolStripComboBoxToolStripTextBoxToolStripProgressBar 控制項的內建包裝函式。您也可以在 ToolStripControlHost 中裝載任何其他現有的控制項或 COM 控制項。

如需控制項的裝載範例,請參閱 HOW TO:使用 ToolStripControlHostWrap 為 Windows Form 控制項換行

呈現

ToolStrip 類別實作的呈現配置,與其他 Windows Form 控制項有極大的差別。透過這種配置,您可以輕鬆地套用樣式和主題。

若要將樣式套用至 ToolStrip 及其包含的所有 ToolStripItem 物件,您不需要處理每個項目的 Paint 事件。您可以將 RenderMode 屬性設定為除了 Custom 以外的任一 ToolStripRenderMode 值來代替。或者,您可以將 Renderer 直接設定為繼承自 ToolStripRenderer 類別的任何類別。設定這個屬性就會自動設定 RenderMode

您可以將 RenderMode 設定為 ManagerRenderMode,並且分別將 RenderModeRenderer 屬性設定為您要的 ToolStripManagerRenderModeToolStripRenderer 值,如此即可將相同的樣式套用至同一個應用程式中的多個 ToolStrip 物件。

如需呈現的範例,請參閱 HOW TO:建立和設定 Windows Form 中的 ToolStrip 控制項自訂產生器ToolStrip 自訂產生器範例

樣式和主題

ToolStrip 及其相關類別提供了簡易方法,不需針對每個項目覆寫 OnPaint 方法即可支援視覺化樣式和自訂外觀。請使用 DisplayStyle 以及 RenderModeRenderer 屬性。

浮動定位和停駐

您可以浮動定位、停駐或絕對定位 ToolStrip 控制項。ToolStrip 項目是由容器的 LayoutEngine 配置。

浮動定位 (Rafting) 是工具列共用水平空間或垂直空間的能力。Windows Form 可以有 ToolStripContainer,而它在表單的上、下、左、右都有面板,可以用來定位及浮動定位 ToolStripMenuStripStatusStrip 控制項。如果將多重 ToolStrip 控制項放置在左邊或右邊的 ToolStripContainer,這些控制項將會以垂直方式堆疊。如果將它們放置在上方或下方的 ToolStripContainer,這些控制項將會以水平方式堆疊。您可以使用 ToolStripContainer 的中央 ToolStripContentPanel,將舊式控制項定位在表單上。

任何或所有 ToolStripContainer 控制項直接在設計階段就是可選取的,同時也可以刪除。ToolStripContainer 是可擴充的、可摺疊的,而且可使用其所包含的控制項來重新調整大小。

停駐 (Docking) 功能會指定表單的上、下、左、右為控制項的簡單位置。

浮動定位優於停駐的地方在於,ToolStripMenuStripStatusStrip 控制項能夠與其他控制項共用水平空間或垂直空間。

大部分 ToolStrip 控制項和其他控制項一樣可停駐在表單上,而不是使用浮動定位。只要將 ToolStrip 控制項從它的 ToolStripContainer 中移除並且將它的 Dock 屬性設定為 None,便能指定此控制項可在表單上隨意定位,或者,也可以設定個別的 Location 屬性來指定該控制項的絕對位置。請參閱 HOW TO:將 ToolStrip 移出 ToolStripContainer 並移至表單上

使用一或多個 ToolStripPanel 控制項的彈性比較大,特別是對多重文件介面 (MDI) 應用程式而言,或者如果您不需要 ToolStripContainer 的話。ToolStripPanel 提供了一個可停駐的空間,可用來放置或浮動定位 ToolStrip 控制項,但不適用於舊式控制項。根據預設,ToolStripPanel 不會出現在設計工具的 [工具箱] 中,但是只要以滑鼠右鍵按一下 [工具箱],再按 [選擇項目],就可以將它放入工具箱。和其他類別一樣,您也可以用程式設計的方式存取 ToolStripPanel

ToolStripMenuStripStatusStrip 會讓項目溢位。這點和 Microsoft Office 工具列上的項目行為方式很類似。

請參閱

工作

ToolStrip 範例

ToolStrip 自訂範例

統一命令範例

概念

ToolStrip 控制項架構

參考

ToolStrip 控制項概觀 (Windows Form)