Private Sub RemoveButton(ByVal Index As Integer)
'Seleccionar el boton a borrar
Dim x As Button = Buttons(Index)
'Eliminar los controladores de eventos
RemoveHandler x.Click, AddressOf Buttons_Click
'Eliminar el control del formulario
Me.Controls.Remove(x)
'Eliminar el control del ArrayList
Buttons.Remove(x)
End Sub
'Control del click sobre los botones
'Se ejecutara cada vez que se haga click sobre un control del arraylist
Private Sub Buttons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'Recojer el boton que a generado el evento
Dim r As Button = sender
'Añadir un botón debajo del que ha generado el evento
AddButton(r.Name & Buttons.Count, r.Text & Buttons.Count, r.Location.Y + r.Size.Height)
'Eliminar el boton que ha generado el evento
RemoveButton(Buttons.Count - 2)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Ponemos el primer control
AddButton("X", "y", 0)
End Sub