次の方法で共有


視覚スタイルを適用したコントロールのレンダリング

.NET Framework では、コントロールをサポートするオペレーティング システムのビジュアル スタイルを使用して、コントロールやその他の Windows ユーザー インターフェイス (UI) 要素をレンダリングできます。 このトピックでは、オペレーティング システムの現在のビジュアル スタイルを使用してコントロールやその他の UI 要素をレンダリングするための .NET Framework のサポートレベルについて説明します。

共通コントロールのレンダリングを行うクラス

コントロールのレンダリングは、コントロールのユーザー インターフェイスを描画することを指します。 System.Windows.Forms名前空間は、いくつかの一般的な Windows フォーム コントロールをレンダリングするためのControlPaint クラスを提供します。 ただし、このクラスは従来の Windows スタイルでコントロールを描画します。これにより、ビジュアル スタイルが有効になっているアプリケーションでカスタム コントロールを描画するときに、一貫した UI エクスペリエンスを維持することが困難になる可能性があります。

.NET Framework 2.0 には、ビジュアル スタイルを使用して共通コントロールのパーツと状態をレンダリングする System.Windows.Forms 名前空間のクラスが含まれています。 これらの各クラスには、オペレーティング システムの現在のビジュアル スタイルでコントロールまたはコントロールの一部を特定の状態で描画するための static メソッドが含まれています。

これらのクラスの一部は、ビジュアル スタイルが使用可能かどうかに関係なく、関連するコントロールを描画するように設計されています。 ビジュアル スタイルが有効になっている場合、クラス メンバーは関連するコントロールを visual スタイルで描画します。ビジュアル スタイルが無効になっている場合、クラス メンバーは従来の Windows スタイルでコントロールを描画します。 これらのクラスは次のとおりです。

他のクラスは、ビジュアル スタイルが使用可能な場合にのみ関連するコントロールを描画でき、ビジュアル スタイルが無効になっている場合、そのメンバーは例外をスローします。 これらのクラスは次のとおりです。

これらのクラスを使用してコントロールを描画する方法の詳細については、「 方法: コントロール レンダリング クラスを使用する」を参照してください。

視覚スタイル要素と描画クラス

System.Windows.Forms.VisualStyles名前空間には、ビジュアル スタイルでサポートされているコントロールまたは UI 要素に関する情報を描画および取得するために使用できるクラスが含まれています。 サポートされているコントロールには、 System.Windows.Forms 名前空間 (前のセクションを参照) にレンダリング クラスを持つ一般的なコントロールと、タブ コントロールや鉄筋コントロールなどの他のコントロールが含まれます。 サポートされているその他の UI 要素には、[ スタート ] メニューの部分、タスク バー、ウィンドウの非クライアント領域があります。

System.Windows.Forms.VisualStyles名前空間の主なクラスは、VisualStyleElementVisualStyleRendererです。 VisualStyleElement は、ビジュアル スタイルでサポートされているコントロールまたはユーザー インターフェイス要素を識別するための基本クラスです。 VisualStyleElement自体に加えて、System.Windows.Forms.VisualStyles名前空間には、コントロール、コントロール パーツ、またはビジュアル スタイルでサポートされているその他の UI 要素のすべての状態に対するVisualStyleElementを返すstatic プロパティを持つVisualStyleElementの入れ子になったクラスが多数含まれています。

VisualStyleRenderer は、オペレーティング システムの現在のビジュアル スタイルによって定義された各 VisualStyleElement に関する情報を描画および取得するメソッドを提供します。 要素に関して取得できる情報には、既定のサイズ、背景の種類、色の定義が含まれます。 VisualStyleRenderer は、Windows Platform SDK の Windows シェル部分からビジュアル スタイル (UxTheme) API の機能をラップします。 詳細については、「 ビジュアル スタイルの有効化」を参照してください。

VisualStyleRendererVisualStyleElementの使用方法の詳細については、「方法: Visual スタイル要素をレンダリングする」を参照してください。

ビジュアルスタイルの有効化

.NET Framework バージョン 1.0 用に作成されたアプリケーションのビジュアル スタイルを有効にするには、プログラマは、ComCtl32.dll バージョン 6 以降を使用してコントロールを描画することを指定するアプリケーション マニフェストを含める必要があります。 .NET Framework バージョン 1.1 以降でビルドされたアプリケーションでは、Application.EnableVisualStyles クラスの Application メソッドを使用できます。

ビジュアル スタイルのサポートの確認

RenderWithVisualStyles クラスの Application プロパティは、現在のアプリケーションがビジュアル スタイルを持つ描画コントロールであるかどうかを示します。 カスタム コントロールを描画するときに、 RenderWithVisualStyles の値を確認して、ビジュアル スタイルの有無にかかわらずコントロールをレンダリングするかどうかを判断できます。 次の表に、 RenderWithVisualStylestrueを返すために必要な 4 つの条件を示します。

条件 注記
オペレーティング システムでは、ビジュアル スタイルがサポートされています。 この条件を個別に確認するには、IsSupportedByOS クラスの VisualStyleInformation プロパティを使用します。
ユーザーがオペレーティング システムでビジュアル スタイルを有効にしました。 この条件を個別に確認するには、IsEnabledByUser クラスの VisualStyleInformation プロパティを使用します。
ビジュアル スタイルは、アプリケーションで有効になります。 Application.EnableVisualStyles メソッドを呼び出すか、ComCtl32.dll バージョン 6 以降を使用してコントロールを描画することを指定するアプリケーション マニフェストを使用して、アプリケーションでビジュアル スタイルを有効にすることができます。
ビジュアル スタイルは、アプリケーション ウィンドウのクライアント領域を描画するために使用されています。 この条件を個別に確認するには、VisualStyleState クラスの Application プロパティを使用し、値がVisualStyleState.ClientAreaEnabledまたはVisualStyleState.ClientAndNonClientAreasEnabledであることを確認します。

ユーザーがビジュアル スタイルを有効または無効にするタイミング、またはビジュアル スタイル間で切り替えるタイミングを確認するには、ハンドラーでUserPreferenceCategory.VisualStyleイベントまたはSystemEvents.UserPreferenceChanging イベントのSystemEvents.UserPreferenceChanged値を確認します。

重要

VisualStyleRendererを使用して、ユーザーがビジュアル スタイルを有効または切り替えたときにコントロールまたは UI 要素をレンダリングする場合は、UserPreferenceChanged イベントではなく、UserPreferenceChanging イベントを処理するときにこれを行ってください。 VisualStyleRendererを処理するときにUserPreferenceChangingクラスを使用すると、例外がスローされます。

こちらも参照ください