Representar controles con estilos visualesRendering Controls with Visual Styles

.NET Framework proporciona compatibilidad para representar controles y otros usuarios de Windows elementos de interfaz (IU) con estilos visuales en los sistemas operativos que los respaldan.The .NET Framework provides support for rendering controls and other Windows user interface (UI) elements using visual styles in operating systems that support them. En este tema se describe los distintos niveles de compatibilidad de .NET Framework para representar controles y otros elementos de interfaz de usuario con el estilo visual actual del sistema operativo.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.

Clases de representación de los controles comunesRendering Classes for Common Controls

La representación de un control hace referencia al hecho de dibujar la interfaz de usuario de un control.Rendering a control refers to drawing the user interface of a control. El espacio de nombres System.Windows.Forms proporciona la clase ControlPaint para representar algunos controles comunes de Windows Forms,The System.Windows.Forms namespace provides the ControlPaint class for rendering some common Windows Forms controls. aunque esta clase dibuja controles en el estilo clásico de Windows, lo que puede dificultar la tarea de mantener una experiencia de IU coherente al dibujar controles personalizados en aplicaciones que tienen habilitados estilos visuales.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 incluye las clases en el System.Windows.Forms espacio de nombres que representan las partes y los Estados de los controles comunes con estilos visuales.The .NET Framework 2.0 includes classes in the System.Windows.Forms namespace that render the parts and states of common controls with visual styles. Cada una de estas clases incluye métodos static para dibujar el control o las partes del control en un estado particular con el estilo visual actual del sistema operativo.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.

Algunas de estas clases están diseñadas para dibujar el control relacionado tanto si los estilos visuales están disponibles como si no lo están.Some of these classes are designed to draw the related control regardless of whether visual styles are available. Si los estilos visuales están habilitados, los miembros de clase dibujarán el control relacionado con estilos visuales. Si no lo están, los miembros de clase dibujarán el control en el estilo clásico de 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. Estas clases incluyen:These classes include:

El resto de las clases solo pueden dibujar el control relacionado si los estilos visuales están disponibles; además, sus miembros generarán una excepción si los estilos visuales están deshabilitados.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. Estas clases incluyen:These classes include:

Para obtener más información sobre el uso de estas clases para dibujar un control, vea Cómo: Usar un Control de clase de representación.For more information on using these classes to draw a control, see How to: Use a Control Rendering Class.

Clases de representación y de elementos de estilos visualesVisual Style Element and Rendering Classes

El espacio de nombres System.Windows.Forms.VisualStyles incluye clases que se pueden usar para dibujar y obtener información sobre cualquier control o elemento de IU que sea compatible con los estilos visuales.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. Los controles compatibles incluyen controles comunes que tienen una clase de representación en el espacio de nombres System.Windows.Forms (consulte la sección anterior), así como otros controles, como los controles de pestaña y los controles 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. Otros elementos de IU compatibles incluyen las partes del menú Inicio , la barra de tareas y el área de no cliente de Windows.Other supported UI elements include the parts of the Start menu, the taskbar, and the nonclient area of windows.

Las clases principales del espacio de nombres System.Windows.Forms.VisualStyles son VisualStyleElement y VisualStyleRenderer.The main classes of the System.Windows.Forms.VisualStyles namespace are VisualStyleElement and VisualStyleRenderer. VisualStyleElement es una clase básica para identificar cualquier control o elemento de IU compatible con los estilos visuales.VisualStyleElement is a foundation class for identifying any control or user interface element supported by visual styles. Además de VisualStyleElement , el espacio de nombres System.Windows.Forms.VisualStyles incluye muchas clases anidadas de VisualStyleElement con propiedades static que devuelven una clase VisualStyleElement para cada estado de un control, parte de control u otro elemento de IU compatible con los estilos visuales.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 proporciona los métodos necesarios para dibujar y obtener información sobre cada clase VisualStyleElement definida por el estilo visual actual del sistema operativo.VisualStyleRenderer provides the methods that draw and get information about each VisualStyleElement defined by the current visual style of the operating system. En la información que se puede recuperar de un elemento se incluye su tamaño predeterminado, el tipo de fondo y las definiciones de color.Information that can be retrieved about an element includes its default size, background type, and color definitions. VisualStyleRenderer ajusta la funcionalidad de la API de estilos visuales (UxTheme) desde la parte del Shell de Windows de Windows Platform SDK.VisualStyleRenderer wraps the functionality of the visual styles (UxTheme) API from the Windows Shell portion of the Windows Platform SDK. Para obtener más información, consulte Enabling Visual Styles.For more information, see Enabling Visual Styles.

Para obtener más información sobre el uso de VisualStyleRenderer y VisualStyleElement, vea Cómo: Representar un elemento de estilo Visual.For more information about using VisualStyleRenderer and VisualStyleElement, see How to: Render a Visual Style Element.

Habilitar los estilos visualesEnabling Visual Styles

Para habilitar los estilos visuales para una aplicación escrita para la versión 1.0 de .NET Framework, los programadores deben incluir un manifiesto de aplicación que especifica que se utilizará para dibujar los controles de ComCtl32.dll versión 6 o posterior.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. Las aplicaciones compiladas con .NET Framework versión 1.1 o posterior pueden usar el Application.EnableVisualStyles método de la Application clase.Applications built with the .NET Framework version 1.1 or later can use the Application.EnableVisualStyles method of the Application class.

Comprobar la compatibilidad de los estilos visualesChecking for Visual Styles Support

La propiedad RenderWithVisualStyles de la clase Application indica si la aplicación actual dibuja los controles con estilos visuales.The RenderWithVisualStyles property of the Application class indicates whether the current application is drawing controls with visual styles. Al pintar un control personalizado, puede comprobar el valor de RenderWithVisualStyles para determinar si debe representar el control con o sin estilos visuales.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. En la siguiente tabla se muestran las cuatro condiciones que deben cumplirse para que RenderWithVisualStyles devuelva true.The following table lists the four conditions that must exist for RenderWithVisualStyles to return true.

CondiciónCondition NotasNotes
El sistema operativo es compatible con los estilos visuales.The operating system supports visual styles. Para comprobar esta condición por separado, use la propiedad IsSupportedByOS de la clase VisualStyleInformation .To verify this condition separately, use the IsSupportedByOS property of the VisualStyleInformation class.
El usuario ha habilitado los estilos visuales en el sistema operativo.The user has enabled visual styles in the operating system. Para comprobar esta condición por separado, use la propiedad IsEnabledByUser de la clase VisualStyleInformation .To verify this condition separately, use the IsEnabledByUser property of the VisualStyleInformation class.
Los estilos visuales están habilitados en la aplicación.Visual styles are enabled in the application. Los estilos visuales se pueden habilitar en una aplicación mediante una llamada al método Application.EnableVisualStyles o usando una aplicación de manifiesto que especifique que se usará la versión 6 o posterior de ComCtl32.dll para dibujar los controles.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.
Los estilos visuales se usan para dibujar el área de cliente de las ventanas de la aplicación.Visual styles are being used to draw the client area of application windows. Para comprobar esta condición por separado, use la propiedad VisualStyleState de la clase Application y compruebe que tiene el valor VisualStyleState.ClientAreaEnabled o 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.

Para determinar el momento en que un usuario habilita o deshabilita los estilos visuales o cambia de un estilo visual a otro, compruebe el valor UserPreferenceCategory.VisualStyle de los controladores de los eventos SystemEvents.UserPreferenceChanging o 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.

Importante

Si quiere usar VisualStyleRenderer para representar un control o un elemento de IU cuando el usuario habilita los estilos visuales o cambia de un estilo a otro, asegúrese de llevar a cabo esta acción cuando controle el evento UserPreferenceChanged , no el evento 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. Si usa la clase VisualStyleRenderer al controlar UserPreferenceChanging, se producirá una excepción.An exception will be thrown if you use the VisualStyleRenderer class when handling UserPreferenceChanging.

Vea tambiénSee also