If you're still working on this one - I've spent days trying to figure out the same problem only to find that the answer is horribly simple...
use the AddHandler method after creating your new control to wire an event to a handler exactly the same as you would in garden variety VB .net
eg.
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim btnTest As New Button()
btnTest.Text = "Click Me!"
AddHandler btnTest.Click, AddressOf OnButtonClick
PlaceHolder1.Controls.Add(btnTest)
End Sub
Private Sub OnButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Response.Write("Button Clicked")
End Sub
if you need to create more than one button and handle each separately, you can set the CommandName or Command Argument properties of the button when you create it and then check for it in the handler
If ctype(sender, button).CommandArgument = "blah" etc