Visual Basic.NET - Como acceder a controles creados dinamicamente

   
Vista:

Como acceder a controles creados dinamicamente

Publicado por Aitor Sanchez (2 intervenciones) el 03/11/2009 15:32:30
Hola, estoy intentando crear un panel de unos 25 cms por 25 cms, y que dentro tendra pequeños paneles, unos 31 + o -, y dentro de estos pequeños paneles hay unas labels.
No es más que un calendario, en el que he creado un panel grande, y dentro le he puesto los dias, en forma de panels pequeños, y dentro de estos panels le he puesto una etiqueta o label que es el numero del dia.
Todo esto esta creado dinamicamente, en una accion o Sub que se llama desde el Load de la window, el problema es que cuando intento programar un evento de los paneles pequeños no lo consigo, no se acceder a los objetos que tienen dentro estos panels (que a su vez estan dentro del panel grande central, donde estan todos los dias).
Os paso el codigo dinamico:

Private Sub CrearCalendar()

Dim paneles(35) As Panel
Dim dia As Label
Dim i, x, y, j As Integer

x = 31
y = 29
i = 0
j = 0

If QueDiaEs("01/01/2009").ToString.Trim.Contains("Thursday") Then
x = x + (116 * 3)
j = 3

End If

For i = 1 To 30

dia = New Label()
dia.Size() = New Size(24, 17)
dia.Location() = New Point(3, 5)
dia.Text() = i
Label15.Text = Date.Parse("01/01/2009").DayOfWeek.ToString
paneles(i) = New Panel()
paneles(i).Enabled = True
If (j = 5 Or j = 6) Then
paneles(i).BackColor() = Color.Aqua
Else
paneles(i).BackColor = Color.White
End If
paneles(i).Height = 110
paneles(i).Width = 110
paneles(i).Location = New Point(x, y)
paneles(i).BorderStyle = BorderStyle.FixedSingle
paneles(i).Enabled = True
Calendario.Controls.Add(paneles(i))
paneles(i).Parent = Calendario
paneles(i).BringToFront()
paneles(i).Show()
paneles(i).Controls.Add(dia)
dia.Parent = paneles(i)
dia.Show()
AddHandler Calendario.Click, AddressOf Paneles_Click
If (j < 6) Then
x = x + 116
j = j + 1
Else
y = y + 121
x = 31
j = 0
End If
Next
End Sub

Gracias!!!
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 acceder a controles creados dinamicamente

Publicado por gon (31 intervenciones) el 03/11/2009 18:41:45
Hola, cualdo agregas esta linea

AddHandler Calendario.Click, AddressOf Paneles_Click

lo que hace es crear el manejador, por lo tanto haces

Private Sub Paneles_Click (ByVal sender As System.Object, ByVal e As System.EventArgs)
msgbox (sender.text)
end sub

sender seria el laber o panel que haces click

cualquier cosa avisa.
saludos
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