buenas tardes de nuevo yo molestando

en esta ocacion quisiera que me ayudaran con la creación de controles en tiempo de ejecucion pero del a siguiente manera:

tengo un formulario con 2 controles el primero es un panel y el segundo es un boton
en el evento click del boton tengo este código

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim titulo1 As New Label()
Dim caja1 As New TextBox()
Dim boton_guardar As New Button()

titulo1.Location = New Point(20, 25)
titulo1.BackColor = Color.Beige
titulo1.AutoSize = True
titulo1.Text = "nombre"

caja1.Location = New Point(70, 20)

boton_guardar.Location = New Point(180, 20)
boton_guardar.Text = "Guardar"
boton_guardar.BackColor = Color.RosyBrown

Panel1.Controls.Add(titulo1)
Panel1.Controls.Add(caja1)
Panel1.Controls.Add(boton_guardar)
End Sub

como ven carga dentro del panel un control label un control textbox y un botón
ahora quisiera saber por medio de que ciclo o función al darle click al boton agregar del formulario las veces que yo quiera automáticamente se cargaran los mismos controles debajo del primer control; a su vez quisiera saber como dentro de el control boton_guardar creado en tiempo de ejecución poderlo programar de la forma que yo quiera por ejemplo si quiero guardar la información en una base de datos o en un archivo; lo que quiero es poder programar el botón creado con el código que acabo de enseñarles

gracias por su ayuda espero pronta respuesta