Representar controles con estilos visuales

.NET Framework proporciona compatibilidad para representar controles y otros elementos de la interfaz de usuario (UI) de Windows usando estilos visuales en los sistemas operativos compatibles. En este tema se tratan los distintos niveles de compatibilidad de .NET Framework para representar controles y otros elementos de UI con el estilo visual actual del sistema operativo.

Clases de representación de los controles comunes

La representación de un control hace referencia al hecho de dibujar la interfaz de usuario de un control. El espacio de nombres System.Windows.Forms proporciona la clase ControlPaint para representar algunos controles comunes de Windows Forms, 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.

.NET Framework 2.0 incluye clases del espacio de nombres System.Windows.Forms que representan las partes y los estados de los controles comunes con los estilos visuales. 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.

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. 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. Estas clases incluyen:

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. Estas clases incluyen:

Para obtener más información sobre cómo usar estas clases para dibujar un control, consulte How to: Use a Control Rendering Class.

Clases de representación y de elementos de estilos visuales

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. 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. Otros elementos de IU compatibles incluyen las partes del menú Inicio , la barra de tareas y el área de no cliente de Windows.

Las clases principales del espacio de nombres System.Windows.Forms.VisualStyles son VisualStyleElement y VisualStyleRenderer. VisualStyleElement es una clase básica para identificar cualquier control o elemento de IU compatible con los estilos visuales. 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.

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. 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. VisualStyleRenderer ajusta la funcionalidad de la API de estilos visuales (UxTheme) desde la parte del Shell de Windows de Windows Platform SDK. Para obtener más información, vea Habilitar estilos visuales.

Para obtener más información sobre el uso de VisualStyleRenderer y VisualStyleElement, consulte How to: Render a Visual Style Element.

Habilitar los estilos visuales

Para habilitar los estilos visuales de una aplicación escrita para .NET Framework 1.0, los programadores deben incluir un manifiesto de aplicación que especifique que se usará la versión 6 o posterior de ComCtl32.dll para dibujar los controles. Las aplicaciones compiladas con .NET Framework 1.1 o una versión posterior pueden usar el método Application.EnableVisualStyles de la clase Application.

Comprobar la compatibilidad de los estilos visuales

La propiedad RenderWithVisualStyles de la clase Application indica si la aplicación actual dibuja los controles con estilos visuales. Al pintar un control personalizado, puede comprobar el valor de RenderWithVisualStyles para determinar si debe representar el control con o sin estilos visuales. En la siguiente tabla se muestran las cuatro condiciones que deben cumplirse para que RenderWithVisualStyles devuelva true.

Condición Notas
El sistema operativo es compatible con los estilos visuales. Para comprobar esta condición por separado, use la propiedad IsSupportedByOS de la clase VisualStyleInformation .
El usuario ha habilitado los estilos visuales en el sistema operativo. Para comprobar esta condición por separado, use la propiedad IsEnabledByUser de la clase VisualStyleInformation .
Los estilos visuales están habilitados en la aplicación. 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.
Los estilos visuales se usan para dibujar el área de cliente de las ventanas de la aplicación. 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.

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 .

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 . Si usa la clase VisualStyleRenderer al controlar UserPreferenceChanging, se producirá una excepción.

Consulte también