visual スタイルが使用されているコントロールのレンダリング
更新 : 2007 年 11 月
.NET Framework は、visual スタイルをサポートするオペレーティング システムで、visual スタイルを使用した、コントロールとその他の Windows ユーザー インターフェイス (UI) 要素のレンダリングをサポートします。ここでは、オペレーティング システムの現在の visual スタイルを使用してコントロールやその他の UI 要素をレンダリングする際に、.NET Framework が提供するサポートのレベルについて説明します。
コモン コントロールの描画クラス
コントロールのレンダリングとは、コントロールのユーザー インターフェイスを描画することです。System.Windows.Forms 名前空間は、いくつかのコモン Windows フォーム コントロールのレンダリングに必要な ControlPaint クラスを提供します。ただし、このクラスではコントロールが従来の Windows スタイルで描画されるため、visual スタイルが有効になっているアプリケーションでカスタム コントロールを描画した場合に、一貫性のある UI のスタイルを維持することが困難になる場合があります。
.NET Framework 2.0 の System.Windows.Forms 名前空間には、visual スタイルを使用してコモン コントロールの各部と状態をレンダリングするクラスが含まれています。これらの各クラスには、オペレーティング システムの現在の visual スタイルを使用して、特定の状態におけるコントロールやコントロール各部を描画する static メソッドがあります。
これらのクラスには、visual スタイルが有効であるかどうかにかかわらず、関連するコントロールを描画するように設計されているものがあります。visual スタイルが有効な場合、これらのクラス メンバは、visual スタイルを使用して関連するコントロールを描画し、visual スタイルが無効な場合は、従来の Windows スタイルでコントロールを描画します。これに該当するクラスを次に示します。
これら以外のクラスは、visual スタイルが有効なときにのみ関連するコントロールを描画でき、visual スタイルが無効な場合は、クラス メンバが例外をスローします。これに該当するクラスを次に示します。
これらのクラスを使用してコントロールを描画する方法の詳細については、「方法 : コントロールの描画クラスを使用する」を参照してください。
visual スタイル要素と描画クラス
System.Windows.Forms.VisualStyles 名前空間には、visual スタイルでサポートされるコントロールや UI 要素を描画したり、その情報を取得したりするために使用できるクラスが含まれています。visual スタイルでサポートされるコントロールには、System.Windows.Forms 名前空間 (前のセクションを参照) に描画クラスが存在するコモン コントロールと、タブ コントロールや rebar コントロールなどのコントロールが含まれます。サポートされるその他の UI 要素には、[スタート] メニュー、タスクバー、およびウィンドウの非クライアント領域の各部が含まれます。
System.Windows.Forms.VisualStyles 名前空間のメイン クラスは、VisualStyleElement と VisualStyleRenderer です。VisualStyleElement は、visual スタイルでサポートされるコントロールやユーザー インターフェイス要素を識別するための基底クラスです。VisualStyleElement 自体の他に、System.Windows.Forms.VisualStyles 名前空間には、visual スタイルでサポートされるコントロール、コントロールの一部、またはその他の UI 要素のすべての状態に応じて VisualStyleElement を返す static プロパティを持つ、VisualStyleElement の入れ子になったクラスが数多く含まれています。
VisualStyleRenderer は、オペレーティング システムの現在の visual スタイルで定義されている各 VisualStyleElement を描画したり、情報を取得したりするメソッドを提供します。要素に関して取得できる情報には、既定のサイズ、背景の種類、色定義などがあります。VisualStyleRenderer は、Windows プラットフォーム SDK の Windows シェル部分に含まれている visual スタイル (UxTheme) API の機能をラップします。詳細については、MSDN ライブラリ (https://msdn.microsoft.com/library/) の プラットフォーム SDK について説明しているセクションの「Using Windows XP Visual Styles」を参照してください。
VisualStyleRenderer と VisualStyleElement の使用方法の詳細については、「方法 : visual スタイル要素を描画する」を参照してください。
visual スタイルの有効化
.NET Framework Version 1.0 用として作成されたアプリケーションで visual スタイルを有効にするには、ComCtl32.dll Version 6 以降を使用してコントロールを描画するように指定するアプリケーション マニフェストを含める必要があります。.NET Framework Version 1.1 以降によって作成されたアプリケーションでは、Application クラスの Application.EnableVisualStyles メソッドを使用できます。
visual スタイルのサポートのチェック
Application クラスの RenderWithVisualStyles プロパティは、現在のアプリケーションが visual スタイルを使用してコントロールを描画するかどうかを示します。カスタム コントロールを描画するときは、RenderWithVisualStyles の値を調べることで、コントロールをレンダリングする際の visual スタイルの必要性の有無を確認できます。RenderWithVisualStyles が true を返すために必要な 4 つの条件を次の表に示します。
条件 |
備考 |
---|---|
オペレーティング システムが visual スタイルをサポートしている |
この条件を個別に確認するには、VisualStyleInformation クラスの IsSupportedByOS プロパティを使用します。 |
ユーザーが、オペレーティング システムで visual スタイルを有効にしている |
この条件を個別に確認するには、VisualStyleInformation クラスの IsEnabledByUser プロパティを使用します。 |
visual スタイルがアプリケーションで有効にされている |
visual スタイルをアプリケーションで有効にするには、Application.EnableVisualStyles メソッドを呼び出すか、ComCtl32.dll Version 6 以降を使用してコントロールを描画するように指定するアプリケーション マニフェストを使用します。 |
アプリケーション ウィンドウのクライアント領域を描画するために、visual スタイルが使用されている |
この条件を個別に確認するには、Application クラスの VisualStyleState プロパティを使用し、その値が VisualStyleState.ClientAreaEnabled または VisualStyleState.ClientAndNonClientAreasEnabled であることを確認します。 |
ユーザーが visual スタイルを有効または無効にしたり、visual スタイルを切り替えたりした時点を確認するには、SystemEvents.UserPreferenceChanging イベントまたは SystemEvents.UserPreferenceChanged イベントのハンドラで UserPreferenceCategory.VisualStyle 値を調べます。
重要 : |
---|
ユーザーが visual スタイルを有効にしたり切り替えたりしたときに VisualStyleRenderer を使ってコントロールや UI 要素をレンダリングする場合は、UserPreferenceChanging イベントではなく UserPreferenceChanged イベントを処理するときに、この操作を行う必要があります。UserPreferenceChanging を処理するときに VisualStyleRenderer クラスを使用すると、例外がスローされます。 |