visual poner para formularios color winforms

winforms - poner - Formularios de Windows: cómo se cambia el color de la fuente de una etiqueta deshabilitada



poner color a un label html (7)

¿Has intentado implementar el evento EnabledChanged? ¿O está buscando más propiedad de "estilos" en el control (hasta donde sé, no existen)?

Estoy tratando de configurar las características de la fuente desactivada para un control de etiqueta. Puedo configurar todas las características de la fuente (tamaño, negrita, etc.), pero el color predeterminado queda anulado por el comportamiento predeterminado de Windows que parece ser uno de estos dos colores:

  • Si el color de fondo es transparente, ForeColor es igual que TextBox desactivado Color.
  • Si el color de fondo está configurado en cualquier otra cosa, ForeColor es un color Gris Oscuro.

La imagen siguiente muestra el comportamiento: la columna 1 es Etiquetas, la Columna 2 es Cuadros de texto y la Columna 3 es Cuadros combinados.

texto alternativo http://highplainstech.com/images/testForm.png

Editar - Explicando la imagen: las primeras dos filas son estilos predeterminados para una etiqueta, un cuadro de texto y un cuadro combinado. En las segundas dos filas, establecí el color de fondo en rojo y primer plano en blanco. El manejo de estilo de fuente deshabilitado por Microsoft es inconsistente.


¿Por qué es esto un problema?

Personalmente, dejaría que windows lo manejara. Las personas están acostumbradas a que los artículos deshabilitados se vean de cierta manera, por lo que si comienzas a tratar de cambiar cada aspecto de su apariencia, puedes confundir a los usuarios.


Eche un vistazo al método ControlPaint.DrawStringDisabled ; podría ser algo útil. Lo he usado al anular el evento OnPaint para controles personalizados.

ControlPaint.DrawStringDisabled(g, this.Text, this.Font, Color.Transparent, new Rectangle(CustomStringWidth, 5, StringSize2.Width, StringSize2.Height), StringFormat.GenericTypographic);


Probablemente necesites anular el evento Paint. Todos los kits de herramientas que he usado hasta ahora tienen el mismo problema cuando el control está deshabilitado. Solo supongo que dejan que Windows haga el dibujo del texto. En cuanto a las etiquetas, bueno, no son un control estándar, y es por eso que están funcionando.


Para el cuadro de texto, puede establecer la propiedad readonly en verdadero manteniendo el control habilitado. A continuación, puede establecer la propiedad BackColor y ForeColor a su gusto. El usuario aún podrá hacer clic en el control y tener un cursor parpadeante, pero no podrá editar nada.

No estoy seguro de si esto se extrapola a otros tipos de control como los cuadros combinados o lo que sea, ya que aún no tuve la oportunidad de experimentar, pero vale la pena intentarlo.



Sobreescribí el método OnPaint de mi control con el método OnPaint a continuación. Pegué toda la clase de control para que sea fácil de copiar.

public partial class NewLabel : Label { public NewLabel() { InitializeComponent(); } protected override void OnPaint(PaintEventArgs e) { TextRenderer.DrawText(e.Graphics, this.Text.ToString(), this.Font, ClientRectangle, ForeColor); } }