Visual Basic.NET - Trabajar con un botón del formulario sin poner su nombre

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Trabajar con un botón del formulario sin poner su nombre

Publicado por carlos (36 intervenciones) el 02/07/2014 23:12:24
Hola.

En un formulario tengo 5 botones llamados: "BotonIphone3G", "BotonIphone4_4S", "BotonIphone5", "BotonIphone5c" y "BotonIphone5s

Luego tengo una función que se le pasa como argumento el nombre de uno de esos 5 botones. Entonces tengo que deshabilitar ese botón. Para eso he hecho este código:

Call DeshabilitarBoton("BotonIphone3G")


Public Function DeshabilitarBoton(ByRef NombredeBoton As String) As String

Dim vector_modelos As String() = {"BotonIphone3G", "BotonIphone4_4S", "BotonIphone5", "BotonIphone5c", "BotonIphone5s"}
For i As Integer = 0 To vector_modelos.Length - 1
If NombredeBoton = vector_modelos(i) Then
vector_modelos(i).Enabled = False
End If
Next i

End Function


Pero claro, el depurador me da un error. Me imagino que está esperando algo así dentro del for: BotonIphone5.enabled= false y no vector_modelos(i).enabled = false. Me imagino que no encuentra ningún objeto llamado "vector_modelos" en el formulario y me da error. ¿sabéis como podría hacerlo?

Necesito hacerlo con un vector y el bucle "for", porque ahora son solo 5 botones pero quizás mañana haya decenas y no puedo ir uno a uno haciendo: if NombredeBoton = BotonIphone5 then BotonIphone5.enabled = false...

No sé si me he explicado bien lo que necesito hacer
Gracias de antemano
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
sin imagen de perfil

Trabajar con un botón del formulario sin poner su nombre

Publicado por Pico (167 intervenciones) el 03/07/2014 07:38:10
Pues no se hace así, no.

Puedes hacer dos cosas: o pones los botones en un array, algo así como Dim vector_botones As Button y luego creando vertor_botones[i], con los que puedes acceder luego a ellos con el mismo array, o usas la colección Controls del form, en la que están todos los controles de ese form. Los recorres todos hasta encontrar el que se llame de determinada manera y ya lo tienes,
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Trabajar con un botón del formulario sin poner su nombre

Publicado por carlos (36 intervenciones) el 03/07/2014 17:37:46
Hola Pico,

La segunda opción no se como sería así que me centro en la primera que creo que será más parecido a lo que estoy haciendo. He puesto lo que comentas de poner los botones en un array de Buttons y no he debido hacerlo bien porque sigue con errores:

Call DeshabilitarBoton("BotonIphone3G")


Public Function DeshabilitarBoton(ByRef NombredeBoton As String) As String

Dim vector_modelos As Button() = {"BotonIphone3G", "BotonIphone4_4S", "BotonIphone5", "BotonIphone5c", "BotonIphone5s"}
For i As Integer = 0 To vector_modelos.Length - 1
If NombredeBoton = vector_modelos(i) Then
vector_modelos(i).Enabled = False
End If
Next i

End Function

Gracias por las respuestas.
Un saludo,
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
sin imagen de perfil
Val: 12
Ha aumentado su posición en 6 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Trabajar con un botón del formulario sin poner su nombre

Publicado por carlos (36 intervenciones) el 03/07/2014 18:08:58
Ok Pico. Soy novato en Visual Basic.net y la primera opción veo que tengo que crear los botones en tiempo de ejecución y eso es muy lioso para mí, y no quiero que sea así. La segunda la verdad no entiendo nada de nada. Antes en Visual Basic 6.o era muy sencillo un array de botones. Ok, pues viendo la dificultad lo haré uno a uno con un if. Gracias por tu respuesta. Un saludo,
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