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

.NET Framework は、インターフェイス (UI) 要素をサポートするオペレーティング システムで visual スタイルを使用して、コントロールのレンダリングとその他の Windows ユーザーのサポートを提供します。The .NET Framework provides support for rendering controls and other Windows user interface (UI) elements using visual styles in operating systems that support them. このトピックでは、オペレーティング システムの現在の visual スタイルを使用して、複数のコントロールのレンダリングやその他の UI 要素の .NET Framework でのサポートのレベルについて説明します。This topic discusses the several levels of support in the .NET Framework for rendering controls and other UI elements with the current visual style of the operating system.

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

コントロールのレンダリングとは、コントロールのユーザー インターフェイスを描画することを意味します。Rendering a control refers to drawing the user interface of a control. System.Windows.Forms 名前空間は、いくつかの一般的な Windows フォーム コントロールをレンダリングするための ControlPaint クラスを提供します。The System.Windows.Forms namespace provides the ControlPaint class for rendering some common Windows Forms controls. ただし、このクラスは従来の Windows スタイルでコントロールを描画するため、視覚スタイルが有効になったアプリケーションでカスタム コントロールを描画する際の一貫した UI エクスペリエンスの維持が困難になる可能性があります。However, this class draws controls in the classic Windows style, which can make it difficult to maintain a consistent UI experience when drawing custom controls in applications with visual styles enabled.

.NET Framework 2.0.NET Framework 2.0 に含まれる System.Windows.Forms 名前空間のクラスは、視覚スタイルを使用して一般的なコントロールのパーツと状態をレンダリングします。The .NET Framework 2.0.NET Framework 2.0 includes classes in the System.Windows.Forms namespace that render the parts and states of common controls with visual styles. これらの各クラスに含まれる static メソッドにより、オペレーティング システムの現在の視覚スタイルを使用して、特定の状態のコントロールまたはコントロールのパーツを描画します。Each of these classes includes static methods for drawing the control or parts of the control in a particular state with the current visual style of the operating system.

これらのクラスの一部は、視覚スタイルが使用可能かどうかに関係なく関連するコントロールを描画するように設計されています。Some of these classes are designed to draw the related control regardless of whether visual styles are available. 視覚スタイルが有効になっている場合、クラス メンバーは視覚スタイルを使用して関連するコントロールを描画します。視覚スタイルが無効になっている場合、クラス メンバーは、従来の Windows スタイルでコントロールを描画します。If visual styles are enabled, then the class members will draw the related control with visual styles; if visual styles are disabled, then the class members will draw the control in the classic Windows style. 次のようなクラスがこれに含まれます。These classes include:

他のクラスは、視覚スタイルが使用可能な場合にのみ関連するコントロールを描画することができ、視覚スタイルが無効になっている場合、それらのメンバーは例外をスローします。Other classes can only draw the related control when visual styles are available, and their members will throw an exception if visual styles are disabled. 次のようなクラスがこれに含まれます。These classes include:

コントロールを描画するためにこれらのクラスの使用に関する詳細については、次を参照してください。方法。コントロールの描画クラスを使用して、します。For more information on using these classes to draw a control, see How to: Use a Control Rendering Class.

視覚スタイル要素とレンダリング クラスVisual Style Element and Rendering Classes

System.Windows.Forms.VisualStyles 名前空間に含まれるクラスを使用して、視覚スタイルによってサポートされる任意のコントロールまたは UI 要素を描画したり、それらに関する情報を取得したりすることができます。The System.Windows.Forms.VisualStyles namespace includes classes that can be used to draw and get information about any control or UI element that is supported by visual styles. サポートされるコントロールには、 System.Windows.Forms 名前空間のレンダリング クラスを使用する一般的なコントロール (前のセクションを参照してください)、およびタブ コントロールや rebar コントロールなどの他のコントロールが含まれます。Supported controls include common controls that have a rendering class in the System.Windows.Forms namespace (see the previous section), as well as other controls, such as tab controls and rebar controls. 他のサポートされる UI 要素には、 [スタート] メニュー、タスクバー、ウィンドウの非クライアント領域のパーツなどがあります。Other supported UI elements include the parts of the Start menu, the taskbar, and the nonclient area of windows.

System.Windows.Forms.VisualStyles 名前空間の主要なクラスは VisualStyleElementVisualStyleRendererです。The main classes of the System.Windows.Forms.VisualStyles namespace are VisualStyleElement and VisualStyleRenderer. VisualStyleElement は、視覚スタイルによってサポートされる任意のコントロールまたはユーザー インターフェイス要素を識別するための基盤クラスです。VisualStyleElement is a foundation class for identifying any control or user interface element supported by visual styles. VisualStyleElement 自体に加えて、 System.Windows.Forms.VisualStyles 名前空間には、視覚スタイルによってサポートされるコントロール、コントロール パーツ、その他の UI 要素のすべての状態の VisualStyleElement を返す static プロパティを持つ VisualStyleElement の多くの入れ子になったクラスが含まれています。In addition to VisualStyleElement itself, the System.Windows.Forms.VisualStyles namespace includes many nested classes of VisualStyleElement with static properties that return a VisualStyleElement for every state of a control, control part, or other UI element supported by visual styles.

VisualStyleRenderer は、オペレーティング システムの現在の視覚スタイルによって定義される各 VisualStyleElement を描画したり、それらに関する情報を取得したりするメソッドを提供します。VisualStyleRenderer provides the methods that draw and get information about each VisualStyleElement defined by the current visual style of the operating system. 取得可能な要素に関する情報には、既定のサイズ、背景の種類、色の定義などが含まれます。Information that can be retrieved about an element includes its default size, background type, and color definitions. VisualStyleRenderer は、Windows プラットフォーム SDK の Windows シェル部分からの視覚スタイル (UxTheme) API の機能をラップします。VisualStyleRenderer wraps the functionality of the visual styles (UxTheme) API from the Windows Shell portion of the Windows Platform SDK. 詳細については、次を参照してください。 Visual スタイルを有効にするします。For more information, see Enabling Visual Styles.

使用しての詳細についてはVisualStyleRendererVisualStyleElementを参照してください方法。Visual スタイル要素を描画します。For more information about using VisualStyleRenderer and VisualStyleElement, see How to: Render a Visual Style Element.

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

.NET Framework version 1.0 用に記述されたアプリケーションの visual スタイルを有効にするには、プログラマは、ComCtl32.dll バージョン 6 以降がコントロールの描画に使用されることを指定するアプリケーション マニフェストを含める必要があります。To enable visual styles for an application written for the .NET Framework version 1.0, programmers must include an application manifest that specifies that ComCtl32.dll version 6 or later will be used to draw controls. .NET Framework version 1.1 以降でビルドされたアプリケーションを使用できる、Application.EnableVisualStylesのメソッド、Applicationクラス。Applications built with the .NET Framework version 1.1 or later can use the Application.EnableVisualStyles method of the Application class.

視覚スタイルのサポートの確認Checking for Visual Styles Support

RenderWithVisualStyles クラスの Application プロパティは、現在のアプリケーションが視覚スタイルを使用してコントロールを描画しているかどうかを示します。The RenderWithVisualStyles property of the Application class indicates whether the current application is drawing controls with visual styles. カスタム コントロールを描画するときには、 RenderWithVisualStyles の値を確認して、コントロールのレンダリングに視覚スタイルを使用する必要があるかどうかを判断できます。When painting a custom control, you can check the value of RenderWithVisualStyles to determine whether you should render your control with or without visual styles. 次の表に、 RenderWithVisualStylestrueを返すために満たす必要がある 4 つの条件を示します。The following table lists the four conditions that must exist for RenderWithVisualStyles to return true.

条件Condition メモNotes
オペレーティング システム視覚スタイルをサポートしている。The operating system supports visual styles. この条件を個別に確認するには、 IsSupportedByOS クラスの VisualStyleInformation プロパティを使用します。To verify this condition separately, use the IsSupportedByOS property of the VisualStyleInformation class.
ユーザーがオペレーティング システムで視覚スタイルを有効にしている。The user has enabled visual styles in the operating system. この条件を個別に確認するには、 IsEnabledByUser クラスの VisualStyleInformation プロパティを使用します。To verify this condition separately, use the IsEnabledByUser property of the VisualStyleInformation class.
アプリケーションで視覚スタイルが有効になっている。Visual styles are enabled in the application. アプリケーションで視覚スタイルを有効にするには、 Application.EnableVisualStyles メソッドを呼び出すか、ComCtl32.dll バージョン 6 以降をコントロールの描画に使用することを指定するアプリケーション マニフェストを使用します。Visual styles can be enabled in an application by calling the Application.EnableVisualStyles method or by using an application manifest that specifies that ComCtl32.dll version 6 or later will be used to draw controls.
アプリケーション ウィンドウのクライアント領域を描画するために視覚スタイルが使用されている。Visual styles are being used to draw the client area of application windows. この条件を個別に確認するには、 VisualStyleState クラスの Application プロパティを使用し、その値が VisualStyleState.ClientAreaEnabled または VisualStyleState.ClientAndNonClientAreasEnabledになっていることを確認します。To verify this condition separately, use the VisualStyleState property of the Application class and verify that it has the value VisualStyleState.ClientAreaEnabled or VisualStyleState.ClientAndNonClientAreasEnabled.

ユーザーが視覚スタイルの有効と無効を切り替えたり、1 つの視覚スタイルから別の視覚スタイルに切り替えたりしたときに、それを確認するには、 UserPreferenceCategory.VisualStyle または SystemEvents.UserPreferenceChanging イベントのハンドラーの SystemEvents.UserPreferenceChanged 値を確認します。To determine when a user enables or disables visual styles, or switches from one visual style to another, check for the UserPreferenceCategory.VisualStyle value in the handlers for the SystemEvents.UserPreferenceChanging or SystemEvents.UserPreferenceChanged events.

重要

ユーザーが視覚スタイルを有効にしたり切り替えたりしたときに、 VisualStyleRenderer を使用してコントロールまたは UI 要素をレンダリングする場合は、 UserPreferenceChanged イベントではなく UserPreferenceChanging イベントを処理するときにこの処理を実行してください。If you want to use VisualStyleRenderer to render a control or UI element when the user enables or switches visual styles, make sure that you do this when handling the UserPreferenceChanged event instead of the UserPreferenceChanging event. VisualStyleRenderer を処理するときに UserPreferenceChangingクラスを使用した場合は、例外がスローされます。An exception will be thrown if you use the VisualStyleRenderer class when handling UserPreferenceChanging.

関連項目See also