Estoy escribiendo una aplicación de WinForms. Tengo muchas etiquetas que representan algunas de estado (Activado/Desactivado etc). Quiero que cada estado a ser de color diferente (verde, gris…).
La única forma que conozco para lograr esto es comprobar si en la etiqueta.Coincidencias de texto de estado requerida y, a continuación, cambiar su ForeColor. Pero este es un camino difícil, ya que los necesitan para realizar esta comprobación cada vez que puso etiqueta de estado de mi solicitud.

Me pregunto si hay alguna manera de hacerlo «en un solo lugar?».
Por ejemplo, escribir un método que se encargará de revisar todas las etiquetas específicas para la cadena y sólo desde el Form_Load()

InformationsquelleAutor artman | 2012-05-02

4 Comentarios

  1. 0

    Enumerar todas las etiquetas en Forma de utilizar los Controles de Formulario y controles de niño, por ejemplo, usar método GetAll de este MODO respuesta :

    Cómo conseguir TODOS los controles de Formularios Windows forms forma de un tipo específico (Botón/cuadro de texto)?

    Y, a continuación, establezca el color apropiado, algo como esto :

    var allLabels = GetAll(form, typeof(Label)); ///you can use this as first param if in form methods
    foreach(Label oneLabel in allLabels)
    {
      if (oneLabel.Text == "Something")
      {
        //set color or whatever
      }
    }
  2. 3

    Usted puede crear su propia etiqueta personalizada de la clase de la cual hereda de la Etiqueta de clase. Algo como esto:

    public class MyLabel : Label
    {
        public MyLabel()
        {
            if(this.Text == "something")
            {
                this.ForeColor = Color.Green;
            }
        }
    
        protected override void OnTextChanged(EventArgs e)
        {
            if(this.Text == "something")
            {
                this.ForeColor = Color.Green;
            }
        }
    }

    Y así en lugar de utilizar la Etiqueta de uso MyLabel en todas partes.

  3. 1

    Añadir todas las etiquetas en una Lista en el Form_Load(), entonces se puede hacer un .Donde(l => l.Text == «Cadena está buscando»). Iterar a través de esos para establecer el forecolor adecuadamente

  4. 0

    También puede tomar ventaja de la propiedad Tag de control de etiqueta. Conjunto de Etiqueta de «Estado» para todos los controles de etiqueta que se utiliza para mostrar el estado y en el evento Page_Load, girar un bucle para establecer ForeColor.

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each control In Me.Controls
            If (TypeOf (control) Is Label) Then
                Dim statusLabel As Label
                statusLabel = control
                If (statusLabel.Tag = "Status") Then
                    statusLabel.ForeColor = Color.Red
                End If
            End If
        Next
    End Sub

Dejar respuesta

Please enter your comment!
Please enter your name here