Pregunta

Mi aplicación de Windows Forms utiliza la siguiente línea estándar de código para que los estilos visuales (tematización) está habilitada para toda la aplicación ...

Application.EnableVisualStyles();

..., que funciona muy bien, todos los controles tienen un aspecto temático en lugar del gris acorazado plana que se podrían obtener de otra manera. Pero necesito para desactivar los estilos visuales para una sola instancia de control. No puedo quitar la línea anterior porque entonces perdería la tematización de todos los controles. ¿Es posible eliminar la tematización de una sola instancia de control?

Para su información: Resulta que yo quiero para eliminar la tematización de una instancia DateTimePicker por lo que si la respuesta general no es excepción de la DateTimePicker entonces eso sería lo suficientemente bueno. Estoy feliz de utilizar la plataforma de invocación si la solución implica jugar con el control en el nivel más bajo.

¿Fue útil?

Solución

Parece que se puede utilizar en un control SetWindowTheme:

[DllImport("uxtheme", ExactSpelling = true, CharSet = CharSet.Unicode)]
public extern static Int32 SetWindowTheme (IntPtr hWnd, 
              String textSubAppName, String textSubIdList);

yourControl.FlatStyle = FlatStyle.System;
SetWindowTheme(yourControl.Handle, "", "");

original CodeProject artículo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top