visual スタイルが使用されているコントロールのレンダリング

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

一般的なコントロールのクラスをレンダリングする

コントロールのレンダリングとは、コントロールのユーザー インターフェイスを描画することを意味します。 System.Windows.Forms 名前空間は、いくつかの一般的な Windows フォーム コントロールをレンダリングするための ControlPaint クラスを提供します。 ただし、このクラスは従来の 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 名前空間の主要なクラスは VisualStyleElementVisualStyleRendererです。 VisualStyleElement は、視覚スタイルによってサポートされる任意のコントロールまたはユーザー インターフェイス要素を識別するための基盤クラスです。 VisualStyleElement 自体に加えて、 System.Windows.Forms.VisualStyles 名前空間には、視覚スタイルによってサポートされるコントロール、コントロール パーツ、その他の UI 要素のすべての状態の VisualStyleElement を返す static プロパティを持つ VisualStyleElement の多くの入れ子になったクラスが含まれています。

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

VisualStyleRendererVisualStyleElement の使用方法について詳しくは、「方法: visual スタイル要素を描画する」を参照してください。

視覚スタイルを有効にする

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

視覚スタイルのサポートの確認

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

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

ユーザーが視覚スタイルの有効と無効を切り替えたり、1 つの視覚スタイルから別の視覚スタイルに切り替えたりしたときに、それを確認するには、 UserPreferenceCategory.VisualStyle または SystemEvents.UserPreferenceChanging イベントのハンドラーの SystemEvents.UserPreferenceChanged 値を確認します。

重要

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

関連項目