Visual スタイルを使用したコントロールのレンダリング
.NET Framework では、コントロールをサポートするオペレーティング システムのビジュアル スタイルを使用して、コントロールやその他の Windows ユーザー インターフェイス (UI) 要素をレンダリングできます。 このトピックでは、オペレーティング システムの現在のビジュアル スタイルを使用してコントロールやその他の UI 要素をレンダリングするための .NET Framework のサポートレベルについて説明します。
共通コントロール用クラスのレンダリング
コントロールのレンダリングは、コントロールのユーザー インターフェイスを描画することを指します。 System.Windows.Forms 名前空間は、一般的な Windows フォーム コントロールをレンダリングするための ControlPaint クラスを提供します。 ただし、このクラスは従来の Windows スタイルでコントロールを描画します。これにより、ビジュアル スタイルが有効になっているアプリケーションでカスタム コントロールを描画するときに、一貫した UI エクスペリエンスを維持することが困難になる可能性があります。
.NET Framework 2.0 には、ビジュアル スタイルを使用して共通コントロールのパーツと状態をレンダリングする System.Windows.Forms 名前空間のクラスが含まれています。 これらの各クラスには、オペレーティング システムの現在のビジュアル スタイルでコントロールまたはコントロールの一部を特定の状態で描画するための static
メソッドが含まれています。
これらのクラスの一部は、ビジュアル スタイルが使用可能かどうかに関係なく、関連するコントロールを描画するように設計されています。 ビジュアル スタイルが有効になっている場合、クラス メンバーは関連するコントロールを visual スタイルで描画します。ビジュアル スタイルが無効になっている場合、クラス メンバーは従来の Windows スタイルでコントロールを描画します。 これらのクラスは次のとおりです。
他のクラスは、ビジュアル スタイルが使用可能な場合にのみ関連するコントロールを描画でき、ビジュアル スタイルが無効になっている場合、そのメンバーは例外をスローします。 これらのクラスは次のとおりです。
これらのクラスを使用してコントロールを描画する方法の詳細については、「方法: コントロール レンダリング クラスを使用する」を参照してください。
Visualスタイル要素とレンダリングクラス
System.Windows.Forms.VisualStyles 名前空間には、ビジュアル スタイルでサポートされているコントロールまたは UI 要素に関する情報を描画および取得するために使用できるクラスが含まれています。 サポートされているコントロールには、System.Windows.Forms 名前空間 (前のセクションを参照) にレンダリング クラスを持つ一般的なコントロールと、タブ コントロールや鉄筋コントロールなどの他のコントロールが含まれます。 サポートされているその他の UI 要素には、の [スタート] メニュー、タスク バー、ウィンドウの非クライアント領域などがあります。
System.Windows.Forms.VisualStyles 名前空間の主なクラスは、VisualStyleElement と VisualStyleRendererです。 VisualStyleElement は、ビジュアル スタイルでサポートされているコントロールまたはユーザー インターフェイス要素を識別するための基本クラスです。 VisualStyleElement 自体に加えて、System.Windows.Forms.VisualStyles 名前空間には、コントロール、コントロール パーツ、またはビジュアル スタイルでサポートされているその他の UI 要素のすべての状態に対する VisualStyleElement を返す static
プロパティを持つ VisualStyleElement の入れ子になったクラスが多数含まれています。
VisualStyleRenderer は、オペレーティング システムの現在のビジュアル スタイルによって定義された各 VisualStyleElement に関する情報を描画および取得するメソッドを提供します。 要素に関して取得できる情報には、既定のサイズ、背景の種類、色の定義が含まれます。 VisualStyleRenderer は、Windows プラットフォーム SDK の Windows シェル部分からビジュアル スタイル (UxTheme) API の機能をラップします。 詳細については、「ビジュアル スタイルを有効にする」を参照してください。
VisualStyleRenderer と VisualStyleElementの使用方法の詳細については、「方法: Visual スタイル要素をレンダリングする」を参照してください。
視覚スタイルの有効化
.NET Framework バージョン 1.0 用に作成されたアプリケーションのビジュアル スタイルを有効にするには、プログラマは、ComCtl32.dll バージョン 6 以降を使用してコントロールを描画することを指定するアプリケーション マニフェストを含める必要があります。 .NET Framework バージョン 1.1 以降でビルドされたアプリケーションでは、Application クラスの Application.EnableVisualStyles メソッドを使用できます。
ビジュアル スタイルのサポートの確認
Application クラスの RenderWithVisualStyles プロパティは、現在のアプリケーションがビジュアル スタイルを持つ描画コントロールであるかどうかを示します。 カスタム コントロールを描画するときに、RenderWithVisualStyles の値を確認して、ビジュアル スタイルを使用してコントロールをレンダリングする必要があるかどうかを判断できます。 次の表に、RenderWithVisualStyles が true
を返すために必要な 4 つの条件を示します。
条件 | メモ |
---|---|
オペレーティング システムでは、ビジュアル スタイルがサポートされています。 | この条件を個別に確認するには、VisualStyleInformation クラスの IsSupportedByOS プロパティを使用します。 |
ユーザーがオペレーティング システムでビジュアル スタイルを有効にしました。 | この条件を個別に確認するには、VisualStyleInformation クラスの IsEnabledByUser プロパティを使用します。 |
ビジュアル スタイルは、アプリケーションで有効になります。 | visual スタイルは、Application.EnableVisualStyles メソッドを呼び出すか、ComCtl32.dll バージョン 6 以降を使用してコントロールを描画することを指定するアプリケーション マニフェストを使用して、アプリケーションで有効にすることができます。 |
ビジュアル スタイルは、アプリケーション ウィンドウのクライアント領域を描画するために使用されています。 | この条件を個別に確認するには、Application クラスの VisualStyleState プロパティを使用し、値が VisualStyleState.ClientAreaEnabled または VisualStyleState.ClientAndNonClientAreasEnabledであることを確認します。 |
ユーザーがビジュアル スタイルを有効または無効にするタイミング、またはビジュアル スタイル間で切り替えるタイミングを確認するには、SystemEvents.UserPreferenceChanging イベントまたは SystemEvents.UserPreferenceChanged イベントのハンドラーで UserPreferenceCategory.VisualStyle 値を確認します。
大事な
VisualStyleRenderer を使用して、ユーザーがビジュアル スタイルを有効または切り替えたときにコントロールまたは UI 要素をレンダリングする場合は、UserPreferenceChanging イベントではなく、UserPreferenceChanged イベントを処理するときにこれを行ってください。 UserPreferenceChangingを処理する際に VisualStyleRenderer クラスを使用すると、例外が発生します。
関連項目
.NET Desktop feedback