Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: seriobd en 20 Mayo 2012, 20:11 pm



Título: problema con label en c#
Publicado por: seriobd en 20 Mayo 2012, 20:11 pm
tengo el siguiente código pero se que se puede hacer mas corto con una especie de lista o algo pero nada que me sale:
if (n == 0)
{
label2.Text = po;
}
if (n == 1)
{
label3.Text = po;
}
if (n == 2)
{
label4.Text = po;
}
if (n == 3)
{
label5.Text = po;
}

lo que necesito es que llene los lebel dependiendo de que posición este "n"

gracias


Título: Re: problema con label en c#
Publicado por: $Edu$ en 20 Mayo 2012, 21:42 pm
Primero te digo que cuando son muchas verificaciones para una variable, lo recomendable es usar Switch:

Código
  1.  
  2. switch (n)
  3. {
  4. case 0:
  5.        label2.text = po;
  6.        break;
  7.  
  8. case 1:
  9.        label3.text = po;
  10.        break;
  11.  
  12. case 2:
  13.        label4.text = po;
  14.        break;
  15.  
  16. case 3:
  17.        label5.text = po;
  18.        break;
  19. }
  20.  
  21.  

Asi queda mejor y ademas en tu codigo verifica cada uno de esos ifs y es una perdida de tiempo porque si llega a valer 0, los demas no van a dar True nunca, pero si hubieras puesto Else if seria distinto, aunque como dije, en estos casos es mejor Switch porque queda mas legible.


Pero.. no es lo mejor en este caso, porque puedes crear una matriz de controles, en este case de labels. Ya sabras como es, yo ya ni me acuerdo, creo que el mismo Visual Studio te pregunta si queres crear la matriz.
Entonces tendras: label() y no necesitas hacer ninguna verificacion, ya que le asignas el mismo valor siempre, la variable po. Entonces solamente hace una linea asi:

Código
  1. label(n).Text = po;

Vos lo aplicas a como queres que sea, pero espero que entiendas que es lo que digo, si vos tenes en tu form:

label(0)   label(2)

label(1)   label(3)

Y con un boton queres hacer que dependiendo el valor de n, el label que vas a ponerle el texto, entocnes pones la linea de codigo que te dije y listo.