none
¿Se puede construir el nombre del label mediante parte del nombre original y el valor de una variable? RRS feed

  • Pregunta

  • Buenas tardes.

    tengo una consulta.

    Quiero cambiar el valor de 4 label mediante un bucle for.

    label1, label1, label3 y label4.

    for (int i = 0; i<= 4; i++)

    {

    label(i.ToString()).text = X;  // ¿Esto como se puede hacer?

    }

    ¿Se puede construir el nombre del label mediante parte del nombre original y el valor de una variable?

    Gracias de antemano.

    Jesús.


    Little Sharp

    martes, 8 de agosto de 2017 15:28

Respuestas

  • Puedes utilizar la colección Controls para indicar el nombre del control al que deseas acceder a sus propiedades, por ejemplo:

    for (int i = 0; i <= 4; i++)
    {
    	Controls[$"label{i+1}"].Text = "SomeValue";
    }

    Claro, se entiende que los nombres de las etiquetas tienen el prefijo label


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.

    • Marcado como respuesta Little Sharp martes, 8 de agosto de 2017 16:09
    martes, 8 de agosto de 2017 15:45
  • hola

    podrias usar algo como ser

    foreach(Label lbl in this.Controls.OfType<Label>()){
    
       lbl.Text = X;
    
    }

    en este caso recorres los labels del form para asignarle un valor

    ahora si quieres ser mas concreto podria ser

    List<string> labelList = new List<string>() { "label1", "label2", ...};
    
    foreach(Label lbl in this.Controls.OfType<Label>()){
    
    	if(labelList.Contains(lbl.Name))
    		lbl.Text = X;
    
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Little Sharp martes, 8 de agosto de 2017 16:09
    martes, 8 de agosto de 2017 15:54

Todas las respuestas

  • Puedes utilizar la colección Controls para indicar el nombre del control al que deseas acceder a sus propiedades, por ejemplo:

    for (int i = 0; i <= 4; i++)
    {
    	Controls[$"label{i+1}"].Text = "SomeValue";
    }

    Claro, se entiende que los nombres de las etiquetas tienen el prefijo label


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.

    • Marcado como respuesta Little Sharp martes, 8 de agosto de 2017 16:09
    martes, 8 de agosto de 2017 15:45
  • hola

    podrias usar algo como ser

    foreach(Label lbl in this.Controls.OfType<Label>()){
    
       lbl.Text = X;
    
    }

    en este caso recorres los labels del form para asignarle un valor

    ahora si quieres ser mas concreto podria ser

    List<string> labelList = new List<string>() { "label1", "label2", ...};
    
    foreach(Label lbl in this.Controls.OfType<Label>()){
    
    	if(labelList.Contains(lbl.Name))
    		lbl.Text = X;
    
    }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Little Sharp martes, 8 de agosto de 2017 16:09
    martes, 8 de agosto de 2017 15:54