La propiedad BackColor
es una propiedad ambiental por defecto, lo que significa que hereda su valor de su control principal. Cuando lo configura explícitamente a un valor particular, eso anula la naturaleza ambiental y lo fuerza a usar ese valor particular.
El control de botón de Windows estándar no admite colores personalizados, por lo que WinForms realmente dibujará el control para permitir que el diseñador anule su color. De esa manera, si quieres tener un feo botón verde o rojo, puedes hacerlo.
Lo que sucedió aquí es que has establecido efectivamente un color de fondo personalizado para el control del botón (lo configuraste en el color de fondo de un control 3D, pero igual podría haber sido morado), y eso obliga a WinForms a Custom dibuja el control y pinta su fondo con el color especificado. Eso es lo que le da la apariencia "plana": el color de fondo ahora está pintado con un único color personalizado, en lugar de usar el efecto de degradado predeterminado. No habría sido tan notable en el tema Windows Classic (pre-Aero), porque los botones en realidad fueron pintados con el color plano de control 3D. Pero Aero agregó gradientes y otros efectos "calientes", lo que hace que esto sobresalga como un pulgar dolorido.
Para borrar el valor que ha establecido y restablecer la naturaleza ambiental de la propiedad, puede hacer clic derecho en la propiedad en la Ventana de Propiedades y seleccionar "Restablecer". También puede hacerlo a través de código mediante el establecimiento de la propiedad a default(Color)
:
myButton.BackColor = default(Color);
También tendrá que establecer la propiedad UseVisualStyleBackColor
de nuevo a true
, que consigue ajusta automáticamente a false
siempre que los bienes BackColor
se cambia para apoyar la costumbre color de fondo.
Como alternativa, puede indicarle a WinForms que ignore por completo las propiedades personalizadas y pida a Windows que dibuje el botón de control. Para ello, establezca la propiedad FlatStyle
en FlatStyle.System
.
Nuevamente, esto puede hacerse en el diseñador o mediante el código. Esto no solo le impedirá alterar cosas tontas como el color de fondo, creando un control terriblemente desagradable, sino que también restaurará el comportamiento nativo del control del botón Win32 a su aplicación WinForms, incluidos los sutiles efectos de desvanecimiento de Aero en el vuelo estacionario.
No tengo idea de por qué este no era el valor predeterminado. Debería tener que hacer una solicitud especial para obtener controles desagradables y no estándar. Eso no debería suceder solo automáticamente. Solo puedo suponer que fue una concesión para los programadores de VB 6, que han podido hacer todo tipo de controles desagradables durante años.
Si cambió en modo de diseño a continuación, sólo tiene que ir a [COLOR] propiedad (en modo de diseño) y haga clic derecho. Obtendrá un menú para volver a la configuración predeterminada. –