La Web del Programador: Comunidad de Programadores
 
    Pregunta:  66204 - AGREGAR LABELS EN EJECUCION EN VISUAL STUDIO 2010
Autor:  Screwerman Bolt
debo crear una matriz de 3*3 de labels para un "gato"(matriz grafica).
la matriz grafica debe ser creada desde el codigo o en la ejecucion.
la idea es que la matriz grafica detecte el click como si fuera un boton pero debe ser un label.

el problema es que solo se crea un label y los otros no aparecen en su locacion que les asigno, como si solo se creara el ultimo, o algo asi...
lo que pasa es que no entiendo como fuciona
como los creo en orden???????????
este es el codigo:

Function crearmatriz()
Dim matriz(3,3) As New Label
Dim confil As Integer
Dim concols As Integer = 1

For fils = 0 To 2
confil = confil + 4
For cols = 0 To 2
concols = concols + 30
matriz(fil,cols).Location = New Point(confil, concols)
matriz( fil, cols).Text = "hola"
Me.Controls.AddRange(New Control() {matriz(fil,cols)})
Next
Next
End Function
obiamente la fucion se llama luego desde un button

  Respuesta:  Abel M. Montalvo
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
crearmatriz()
End Sub

Private Sub crearmatriz()
Dim matriz(3, 3) As Label
Dim XInicial As Integer = 50
Dim YInicial As Integer = 50
Dim separacion As Integer = 100

For fils = 0 To 2
For cols = 0 To 2
matriz(fils, cols) = New Label
matriz(fils, cols).Name = fils.ToString + " " + cols.ToString
matriz(fils, cols).Location = New Point(XInicial + fils * separacion, YInicial + cols * separacion)
matriz(fils, cols).Text = "hola"

'Agregamos un evento --> esto es extra porsi quieres saber que label precionaste
AddHandler matriz(fils, cols).Click, AddressOf EventoClickLabel ' Agregamos el evento Click al label

Me.Controls.Add(matriz(fils, cols))
Next
Next
End Sub

Private Sub EventoClickLabel(ByVal sender As Object, ByVal e As System.EventArgs) ' Este es el evento que recibe al label y a Event
Dim Milabel As Label = CType(sender, Label) ' sender (tipo object) es el label y lo convertimos a label para manipular sus propiedades
MessageBox.Show(Milabel.Name)
End Sub


Te faltaria repasar matrises, creacion de controles, agregar eventos a controles, perdona mi falta de ortografia.
Un saludo
Abel M.