使用視覺化樣式呈現控制項

.NET Framework 支援在支援控制項的作業系統中使用視覺化樣式來轉譯控制項和其他 Windows 使用者介面 (UI) 元素。 本主題討論 .NET Framework 中的數種支援層級,以使用作業系統的目前視覺化樣式轉譯控制項和其他 UI 元素。

呈現通用控制項的類別

呈現控制項是指繪製控制項的使用者介面。 System.Windows.Forms 命名空間提供的 ControlPaint 類別可用來呈現一些通用的 Windows Forms 控制項。 不過,此類別會使用傳統的 Windows 樣式來繪製控制項,並導致在啟用視覺化樣式的應用程式中繪製自訂控制項時,很難保持一致的 UI 經驗。

.NET Framework 2.0 包含命名空間中的 System.Windows.Forms 類別,這些類別會以視覺化樣式呈現通用控制項的元件和狀態。 每個類別皆包括 static 方法,可在使用作業系統目前的視覺化樣式時,繪製控制項或特定狀態的控制項組件。

不論是否可以使用視覺化樣式,在這些類別中,有一些類別是專門設計來繪製相關的控制項。 如果啟用了視覺化樣式,則類別成員會使用視覺化樣式繪製相關控制項;如果停用了視覺化樣式,類別成員會以傳統的 Windows 樣式繪製控制項。 這些類別包括:

其他類別只能夠在視覺化樣式可用時,繪製相關的控制項,如果停用了視覺化樣式,類別成員便會擲回例外狀況。 這些類別包括:

如需使用這些類別繪製控制項的詳細資訊,請參閱 How to: Use a Control Rendering Class

視覺化樣式項目和呈現類別

System.Windows.Forms.VisualStyles 命名空間所包含的類別可以用來繪製視覺化樣式所支援的任何控制項或 UI 項目,並取得相關的詳細資訊。 支援的控制項包括:在 System.Windows.Forms 命名空間中具有呈現類別的通用控制項 (請參閱上一節),以及其他控制項 (例如索引標籤控制項和 Rebar 控制項)。 其他支援的 UI 項目包含 [開始] 功能表組件、工具列以及視窗的非工作區。

System.Windows.Forms.VisualStyles 命名空間的主要類別是 VisualStyleElementVisualStyleRendererVisualStyleElement 是基礎類別,可供識別視覺化樣式支援的任何控制項或使用者介面項目。 除了 VisualStyleElement 本身以外, System.Windows.Forms.VisualStyles 命名空間還包含許多具有 VisualStyleElement 屬性的 static 巢狀類別,該屬性會為視覺化樣式支援的控制項、控制項組件或其他 UI 項目的每個狀態,傳回 VisualStyleElement

VisualStyleRenderer 提供相關方法,可供繪製作業系統目前的視覺化樣式所定義的每一個 VisualStyleElement ,並取得其資訊。 系統可以擷取的項目資訊包括:其預設大小、背景類型和色彩定義。 VisualStyleRenderer 包裝了 Windows Platform SDK 之 Windows Shell 部分的視覺化樣式 (UxTheme) API 功能。 如需詳細資訊,請參閱 啟用視覺化樣式

如需使用 VisualStyleRendererVisualStyleElement的詳細資訊,請參閱 How to: Render a Visual Style Element

啟用視覺化樣式

若要啟用針對 .NET Framework 1.0 版所撰寫之應用程式的視覺化樣式,程式設計人員必須包含應用程式資訊清單,以指定 ComCtl32.dll 6 版或更新版本將用來繪製控制項。 使用 .NET Framework 1.1 版或更新版本建置的應用程式可以使用 Application.EnableVisualStyles 類別的 Application 方法。

檢查視覺化樣式支援

RenderWithVisualStyles 類別的 Application 屬性會指出目前的應用程式是否使用視覺化樣式繪製控制項。 在繪製自訂控制項時,您可以檢查 RenderWithVisualStyles 的值,以決定是否要使用視覺化樣式呈現控制項。 下表列出四個條件,唯有這些條件成立, RenderWithVisualStyles 才會傳回 true

條件 備註
作業系統支援視覺化樣式。 若要個別驗證這個條件,請使用 IsSupportedByOS 類別的 VisualStyleInformation 屬性。
使用者已經啟用作業系統中的視覺化樣式。 若要個別驗證這個條件,請使用 IsEnabledByUser 類別的 VisualStyleInformation 屬性。
已經啟用應用程式中的視覺化樣式。 您可以呼叫 Application.EnableVisualStyles 方法或使用應用程式資訊清單 (其中指定使用 ComCtl32.dll 6 (含) 以後版本來繪製控制項),以啟用應用程式中的視覺化樣式。
正在使用視覺化樣式來繪製應用程式視窗的工作區。 若要個別驗證這個條件,請使用 VisualStyleState 類別的 Application 屬性,並驗證該屬性具有 VisualStyleState.ClientAreaEnabledVisualStyleState.ClientAndNonClientAreasEnabled值。

若要使用者何時啟用或停用視覺化樣式或在視覺化樣式之間相互切換,請檢查 UserPreferenceCategory.VisualStyleSystemEvents.UserPreferenceChanging 事件處理常式中的 SystemEvents.UserPreferenceChanged 值。

重要

如果您想在使用者啟用或切換視覺化樣式時使用 VisualStyleRenderer 呈現控制項或 UI 項目,請務必在處理 UserPreferenceChanged 事件時進行此作業,而不是在處理 UserPreferenceChanging 事件時這麼做。 如果您在處理 VisualStyleRenderer 時使用 UserPreferenceChanging類別,便會擲回例外狀況。

另請參閱