Visual Basic.NET - Matriz de controles

 
Vista:
sin imagen de perfil

Matriz de controles

Publicado por Manuel (2 intervenciones) el 27/01/2017 14:22:34
Muy buenas.

Acabo de instalar Visual Studio 2015 para probar a hacer un programa que tenía hecho en VB6, y ver las diferencias y si me merece la pena el cambio. El problema que tengo es que en VB6 podía crear matrices de botones, textbox, lstbox, en el propio diseñador, y por lo que veo en Visual Studio no se puede hacer. ¿Existe alguna solución fácil, o es mejor que nombre a los objetos de manera diferente? Esto último me parece muy latoso, sobre todo si necesito recorrer estos objetos.

Gracias y un saludo
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
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Matriz de controles

Publicado por Miguel (476 intervenciones) el 27/01/2017 21:06:34
Pues también puedes crear matrices de controles pero lo tienes que hacer por medio de código, es bastante fácil (como si se tratara de cualquier objeto).
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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Matriz de controles

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 27/01/2017 21:14:22
Para ver si te merece la pena el cambio?.

La verdad que eso ni se debería preguntar, claro que vale la pena el cambio y mucho, para comenzar cómo te va trabajando actualmente en equipos con los nuevos sistemas operativos como decir por ejemplo windows 10 y sobre todo a 64 bits?.

VB6.0, no es un lenguaje orientado a objetos por ejemplo, por lo tanto no puedes hacer herencia que es muy importante y uno de los pilares de la POO, para acceso a datos no puedes hacer uso de las nuevas tecnologías de acceso a datos que tiene Microsoft, como Entity framework, o hacer uso de linq, en resumen VB6.0, ya quedó obsoleto hace muchos años.

Y claro que si se puede crear un arreglo de controles en VB.NET, por ejemplo.

1
2
3
4
5
6
7
8
9
10
Dim BtnF As Button()
BtnF = New Button(10) {}
For i As Integer = 0 To  10
	BtnF(i) = New Button()
	BtnF(i).Name = "BtnF" + i.ToString()
	BtnF(i).Size = New Size(150, 80)
	BtnF(i).Text ="Aqui Texto"
	BtnF(i).Location =ubicacion
	BtnF(i).BackColor = Color.White
Next

Listo, asunto arreglado

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Matriz de controles

Publicado por Manuel (2 intervenciones) el 27/01/2017 22:51:50
Gracias por la respuesta.

Pues decirte que todavía no he probado Windows 10. He probado Windows 8, pero sigo muy contento con el Windows 7 y no tengo intención de cambiarlo por el momento.

Volviendo al tema de la programación, he encontrado esta solución fácil al tema de las matrices, que me parece muy práctica ya que me permite diseñar primero.

Copiado tal cual:

You have to draw FIVE textboxes and ONE button on the form

(1) Declare a Collection at class level,

(2) In Form_Load event, add your textboxes to the Collection

(3) You can access all your textboxes with for loop as shown in following code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim AL As New Collection
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    AL.Add(TextBox1)
    AL.Add(TextBox2)
    AL.Add(TextBox3)
    AL.Add(TextBox4)
    AL.Add(TextBox5)
End Sub
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim i As Integer
    For i = 1 To AL.Count
        AL(i).Text = "Hello"
    Next
End Sub

Me parece que funcionaría bien para lo que yo intento hacer, pero antes que nada necesito llenar dos listbox pulsando un botón y guiándome por el ejemplo anterior lo haría de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Dim LIS As New Collection
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LIS.Add(lstPar1)
        LIS.Add(lstPar2)
    End Sub
 
    Private Sub btnCar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCar.Click
        Dim i As Integer
        For i = 0 To 1
            LIS(i).' Aquí tengo el problema ya que no aparece ninguna propiedad o método para añadir los items.
        Next
 
    End Sub
End Class


¿Podrías decirme el fallo? La verdad que viniendo de VB6, si bien muchas cosas son comunes, hay cambios y cosas nuevas que supongo que con el tiempo iré controlando.


Gracias y 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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Matriz de controles

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 29/01/2017 05:02:59
Pues no se de que tipo serán tus items, pero si es una colección de algo, deberías recorrerlos con un for each y encontrarás sus propiedades y métodos en cada item de la coleccion.

Así como lo estás haciendo, solo estás recorriendo tu colleción, pero no se de que será tu colección.

Saludos cordiales,
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
Imágen de perfil de Mauricio Antonio
Val: 65
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Matriz de controles

Publicado por Mauricio Antonio (2 intervenciones) el 27/06/2020 01:10:53
Acabo de Leer tus inquetudes, no se si te sirv a todavia pero acabo de subir un tema y una codigo fuente de ejemplo sobre esto, se Llama "Matriz de Controles y Arrays", aunque tu tema es de años atras de pronto aun te pueda servir ser mi aporte.
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