Visual Basic.NET - ¿Como se puede hacer esto?

 
Vista:

¿Como se puede hacer esto?

Publicado por HAF (178 intervenciones) el 23/01/2007 13:22:59
Hola Amigos de foro necesito cambiarle la propiedad de visible = false a varios objetos a la vez (segun las necesidades) los cuales se llaman de manera parecidoa solo que cambia para cada uno el numero final, Me explico: lblnumero_1.visible=false ,lblnumero_2.visible=false,lblnumero_3.visible=false así hasta el número 35 (lblnumero_35.visible=false )

por ejemplo desde el numerto 25 hasta el numero 35

Necesito hacer algo como esto :

dim i as integer
for i = 25 to 35
me.lblnumero_&i.visible=false
next

¿como lo puedo hacer ?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Como se puede hacer esto?

Publicado por Pablo (1 intervención) el 23/01/2007 19:54:25
Prueba esto:

dim i as integer

for i = 25 to 35
For Each c As Control In Me.Controls
If c.Name.EndsWith("lblnumero_" & i) Then
c.visible=false
exit for
End If
Next
next
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿Como se puede hacer esto?

Publicado por Javier Suero (30 intervenciones) el 23/01/2007 20:53:15
Hay otra manera. Es con reflection, pero es una solución mala, la verdad. Reflection es una técnica alucinante pero pesada que hay que evitar siempre que se pueda. La pongo como curiosidad.

For x As Integer = 25 To 35
Dim CampoCaja As System.Reflection.FieldInfo = Me.GetType().GetField("_TextBox" & x.ToString(), System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Public Or System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.DeclaredOnly)
DirectCast(CampoCaja.GetValue(Me), TextBox).Visible = False
Next

Otra solución más elegante, a mi modo de ver, sería en modo de diseño introducir en el tag de los controles que queramos controlar una marca. Por ejemplo, "MiMarca", y luego buscarlo en la colección de controles.

For Each Control As Control In Me.Controls
If Not Control.Tag Is Nothing AndAlso Control.Tag = "MiMarca" Then
Control.Visible = False
End If
Next

Pero ojo, si estos controles están dentro de un panel no te valdrá más que la primera o recorrer la colección Controls de forma recursiva hasta sacarlos todos.

Espero haber echado una manilla.

Un saludo, Javier.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas gracias lo voy a probar

Publicado por Haf (178 intervenciones) el 24/01/2007 12:49:18
Muchas gracias , amigos lo voy a probar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar