Ok, I'm in a similar situation except that I'm using a VBControlExtender and it still doesn't work. Here's what the code looks like:

Project1.UserControl1:
VB Code:
  1. Private WithEvents m_ctlDynamicDevice   As VBControlExtender
  2.  
  3. Public Sub SomeSub()
  4.  
  5.     Set m_ctlDynamicDevice =     UserControl.Controls.Add("Project2.UserControl2", "DynDev")
  6.  
  7. End Sub
  8.  
  9. Private Sub m_ctlDynamicDevice_ObjectEvent(info As EventInfo)
  10.     If info.Name = "OnSomeEvent" then
  11.         'handle the event
  12.     End If
  13. End Sub
Project2.UserControl2:
VB Code:
  1. Event OnSomeEvent
  2.  
  3. Public Sub TriggerEvent
  4.     RaiseEvent OnSomeEvent
  5. End Sub

I can step into the TriggerEvent routine, but when the event is raised, I can't step into the ObjectEvent routine. Also, UserControl.Controls.Add returns a valid object and that object does not change between the time its added and the time the event handler should be called.