visual poner hacer forecolor como color clic cambiar boton .net winforms visual-studio button backcolor

.net - hacer - poner color a un label c#



Cómo restablecer el botón predeterminado BackColor? (9)

Cuando cambia el color de fondo predeterminado, voltea la propiedad UseVisualStyleBackColor en falso.

¡Solo cambia eso a verdadero y deberías estar listo!

Estaba experimentando con diferentes opciones para el color de fondo del botón y terminé cambiando la propiedad BackColor en la categoría Apariencia. Luego lo cambié a lo que es predeterminado, que es Control , pero todavía se ve diferente de otros botones:

Intenté construir el proyecto y reiniciar Visual Studio, pero no ayudó.

Sé que puedo arrastrar otro botón y copiar / pegar código, pero ¿qué es lo que causa esto en primer lugar y cómo lo soluciono correctamente?


En Winforms, el color predeterminado es Control. Puede configurarlo desde el Panel de propiedades en VS.

PropertyName es BackColor y el color que desea es en Colores del sistema -> Control


En referencia al título de su pregunta, "¿Cómo restablecer el botón predeterminado BackColor?" , Resolví mi problema por:

Cree otro botón, digamos ButtonFoo , y ButtonFoo como invisible,

ButtonFoo.visible = False

y puede usar este botón para obtener su color (ya que es un color predeterminado) para restablecer su otro color de botón, por ejemplo,

ButtonChangedColor.BackColor = ButtonFoo.BackColor

Ahí vas; el color se restablece a su valor predeterminado :)


La propiedad BackColor es una propiedad ambiental por defecto, lo que significa que hereda su valor de su control principal. Cuando lo establece explícitamente para 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 estableces 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 dibujar el control personalizado 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), ya que 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 restaurar 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 del código estableciendo la propiedad como default(Color) :

myButton.BackColor = default(Color);

También deberá volver a establecer la propiedad UseVisualStyleBackColor en true , que se establece automáticamente en false siempre que se cambie la propiedad BackColor para que admita el color de fondo personalizado.

Alternativamente, puede decirle a WinForms que ignore por completo las propiedades personalizadas y le pida a Windows que dibuje el control del botón. Para ello, establezca la propiedad FlatStyle.System en FlatStyle.System .

De nuevo, esto puede hacerse en el diseñador o a través del 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é esto no fue el 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.


Lo que funcionó para mí:

CommandButton1.BackColor = vbButtonFace


Para restablecer el color de fondo predeterminado del botón, use;

Button1.BackColor = SystemColors.ButtonFace Button1.UseVisualStyleBackColor = True


Para restaurar el fondo y el primer plano predeterminados a un botón, use:

Button1.BackColor = SystemColors.ButtonFace; Button1.ForeColor = default(Color); Button1.UseVisualStyleBackColor = true;


Button1.BackColor = Color.FromKnownColor(KnownColor.Control)

Utilice FromKnowColor para acceder a los colores del sistema. Es así de simple.


Button1.BackColor = Color.Gainsboro