Representar controles con estilos visuales

Actualización: noviembre 2007

.NET Framework proporciona compatibilidad para representar controles y otros elementos de la interfaz de usuario de Windows mediante los estilos visuales de los sistemas operativos que los admiten. Este tema trata los distintos niveles de compatibilidad en .NET Framework para la representación de controles y otros elementos de la IU con el estilo visual actual del sistema operativo.

Representar clases para controles comunes

Representar un control significa 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 formularios Windows Forms. Sin embargo, esta clase dibuja controles en el estilo Windows clásico, lo que puede dificultar el mantener una experiencia coherente de interfaz de usuario cuando se dibujan controles personalizados en aplicaciones con estilos visuales habilitados.

.NET Framework 2.0 incluye las clases en el espacio de nombres System.Windows.Forms que representan las partes y los estados de los controles comunes con estilos visuales. Cada una de estas clases incluye métodos static para dibujar el control o partes del control en un estado particular con el estilo visual actual del sistema operativo.

Algunas de estas clases se diseñan para dibujar el control relacionado sin tener en cuenta la disponibilidad de los estilos visuales. Si los estilos visuales están habilitados, los miembros de la clase dibujarán el control relacionado con estilos visuales; si los estilos visuales están deshabilitados, los miembros de la clase dibujarán el control en el estilo clásico de Windows. Estas clases incluyen:

Otras clases sólo pueden dibujar el control relacionado cuando están disponibles los estilos visuales y sus miembros producirán una excepción si los estilos visuales están deshabilitados. Estas clases incluyen:

Para obtener más información sobre cómo utilizar estas clases para dibujar un control, vea Cómo: Utilizar una clase de representación de controles.

Clases de representación y de elemento de estilo visual

El espacio de nombres System.Windows.Forms.VisualStyles incluye clases que se pueden utilizar para dibujar y obtener información sobre cualquier control o elemento de la interfaz de usuario admitida por estilos visuales. Los controles admitidos 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 controles de ficha y controles rebar. Otros elementos de interfaz de usuario admitidos son las partes del menú Inicio, la barra de tareas y el área no cliente de las ventanas.

Las clases principales del espacio de nombres System.Windows.Forms.VisualStyles son VisualStyleElement y VisualStyleRenderer. VisualStyleElement es una clase base para identificar cualquier control o elemento de interfaz de usuario admitido por estilos visuales. Además del mismo VisualStyleElement, el espacio de nombres System.Windows.Forms.VisualStyles incluye muchas clases anidadas de VisualStyleElement con propiedades static que devuelven un VisualStyleElement para cada estado de un control, parte de control o cualquier otro elemento de interfaz de usuario admitido por estilos visuales.

VisualStyleRenderer proporciona los métodos que dibujan y obtienen información sobre cada VisualStyleElement definido por el estilo visual actual del sistema operativo. La información que se puede recuperar sobre cada elemento incluye su tamaño predeterminado, el tipo de fondo y las definiciones del color. VisualStyleRenderer ajusta la funcionalidad de los estilos visuales de la API (UxTheme) desde la parte de Windows Shell de Windows Platform SDK. Para obtener más información, vea "Using Windows XP Visual Styles" en la sección de Platform SDK de MSDN Library en

Para obtener más información sobre el uso de VisualStyleRenderer y VisualStyleElement, vea Cómo: Representar un elemento de estilo visual.

Habilitar estilos visuales

Para habilitar 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 especifique que se utilizará ComCtl32 versión 6 o posterior para dibujar controles. Las aplicaciones generadas con .NET Framework versión 1.1 o posterior pueden utilizar el método Application.EnableVisualStyles de la clase Application.

Comprobar la compatibilidad con estilos visuales

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

Condición

Notas

El sistema operativo admite los estilos visuales.

Para comprobar esta condición por separado, utilice la propiedad IsSupportedByOS de la clase VisualStyleInformation.

El usuario ha habilitado estilos visuales en el sistema operativo.

Para comprobar esta condición por separado, utilice la propiedad IsEnabledByUser de la clase VisualStyleInformation.

Los estilos visuales se habilitan en la aplicación.

Los estilos visuales se pueden habilitar en una aplicación llamando al método Application.EnableVisualStyles o utilizando un manifiesto de aplicación que especifica que CmCtl32.dll versión 6 o posterior se utilizará para dibujar controles.

Los estilos visuales se están utilizando para dibujar el área de cliente de las ventanas de la aplicación.

Para comprobar esta condición por separado, utilice la propiedad VisualStyleState de la clase Application y compruebe que tiene el valor VisualStyleState.ClientAreaEnabled o VisualStyleState.ClientAndNonClientAreasEnabled.

Para determinar cuándo un usuario habilita o deshabilita estilos visuales, o cambia de un estilo visual a otro, se busca el valor UserPreferenceCategory.VisualStyle en los controladores para los eventos SystemEvents.UserPreferenceChanging o SystemEvents.UserPreferenceChanged.

Nota importante:

Si desea utilizar VisualStyleRenderer para representar un control o elemento de interfaz de usuario cuando el usuario habilita o cambia de estilos visuales, asegúrese de que lo hace cuando controla el evento UserPreferenceChanged en lugar del evento UserPreferenceChanging. Se producirá una excepción si utiliza la clase VisualStyleRenderer al controlar UserPreferenceChanging.

Vea también

Otros recursos

Dibujo y representación personalizados de controles