Foros del Web » Programación para mayores de 30 ;) » .NET »

Crear array de controles?

Estas en el tema de Crear array de controles? en el foro de .NET en Foros del Web. Hola a todos. Vereis, tengo un problema a la hora de optimizar codigo. Resulta que tengo un form con 28 labels y todos quiero que ...
  #1 (permalink)  
Antiguo 05/01/2011, 08:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años
Puntos: 3
Exclamación Crear array de controles?

Hola a todos.

Vereis, tengo un problema a la hora de optimizar codigo.

Resulta que tengo un form con 28 labels y todos quiero que se pongan a 0 cuando cambio de valor en un combobox, hasta aquí bien. El combobox funciona bien y tal.

Pero fijaros en el codigo:

Código VB .NET:
Ver original
  1. Private Sub inicializa() Handles cmb_unitat.SelectedIndexChanged
  2.      lbl_pregunta_1_1.Text = 0
  3.      lbl_pregunta_1_2.Text = 0
  4.      lbl_pregunta_2_1.Text = 0
  5.      lbl_pregunta_2_2.Text = 0
  6.      lbl_pregunta_2_3.Text = 0
  7.      lbl_pregunta_3_1.Text = 0
  8.      lbl_pregunta_3_2.Text = 0
  9.      lbl_pregunta_3_3.Text = 0
  10.      lbl_pregunta_4.Text = 0
  11.      lbl_pregunta_5.Text = 0
  12.      lbl_pregunta_6.Text = 0
  13.      lbl_pregunta_7.Text = 0
  14.      lbl_pregunta_8.Text = 0
  15.      lbl_pregunta_9.Text = 0
  16.  
  17.      lbl_total_pregunta_1_1.Text = 0
  18.      lbl_total_pregunta_1_2.Text = 0
  19.      lbl_total_pregunta_2_1.Text = 0
  20.      lbl_total_pregunta_2_2.Text = 0
  21.      lbl_total_pregunta_2_3.Text = 0
  22.      lbl_total_pregunta_3_1.Text = 0
  23.      lbl_total_pregunta_3_2.Text = 0
  24.      lbl_total_pregunta_3_3.Text = 0
  25.      lbl_total_pregunta_4.Text = 0
  26.      lbl_total_pregunta_5.Text = 0
  27.      lbl_total_pregunta_6.Text = 0
  28.      lbl_total_pregunta_7.Text = 0
  29.      lbl_total_pregunta_8.Text = 0
  30.      lbl_total_pregunta_9.Text = 0
  31. End Sub

Aquí bien, porqué tengo 28 labels, pero si en otra aplicación tengo 100 labels que, 100 lineas de codigo?

Como se podría hacer un bucle de esto? He probado de hacer un for each pero no me lo hace, algo debo de hacer mal :(

Me podríais ayudar?

Muchas gracias!
  #2 (permalink)  
Antiguo 05/01/2011, 09:42
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 9 meses
Puntos: 267
Respuesta: Crear array de controles?

Hola Fernando_net los seteas de esta manera :

Código vb:
Ver original
  1. 'Creas este sub
  2. Private Sub Limpiar_Textbox_Label(ByVal f As Form)
  3. ' recorrer todos los controles del formulario indicado
  4. For Each c As Control In f.Controls
  5. 'Si el tipo de control es textbox entonces...
  6. If TypeOf c Is TextBox Then
  7. c.Text = "0" ' Cambio el valor a 0
  8. End If
  9. 'Si el tipo de control es Label entonces...
  10. If TypeOf c Is Label Then
  11. c.Text = "0" ' Cambio el valor a 0
  12. End If
  13. Next
  14. End Sub
  15.  
  16. 'Y luego en la accion SelectedIndexChanged de tu combo llamas al sub de esta manera
  17. Limpiar_Textbox_Label(Me)

Espero haberte ayudado. Saludos!
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net

Última edición por Aquaventus; 05/01/2011 a las 10:06
  #3 (permalink)  
Antiguo 17/01/2011, 02:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 191
Antigüedad: 14 años
Puntos: 3
Respuesta: Crear array de controles?

Cita:
Iniciado por Aquaventus Ver Mensaje
Hola Fernando_net los seteas de esta manera :

Código vb:
Ver original
  1. 'Creas este sub
  2. Private Sub Limpiar_Textbox_Label(ByVal f As Form)
  3. ' recorrer todos los controles del formulario indicado
  4. For Each c As Control In f.Controls
  5. 'Si el tipo de control es textbox entonces...
  6. If TypeOf c Is TextBox Then
  7. c.Text = "0" ' Cambio el valor a 0
  8. End If
  9. 'Si el tipo de control es Label entonces...
  10. If TypeOf c Is Label Then
  11. c.Text = "0" ' Cambio el valor a 0
  12. End If
  13. Next
  14. End Sub
  15.  
  16. 'Y luego en la accion SelectedIndexChanged de tu combo llamas al sub de esta manera
  17. Limpiar_Textbox_Label(Me)

Espero haberte ayudado. Saludos!
Perfecto Aquaventus!

Muchisimas gracias

Etiquetas: label, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:04.