Understanding AddHandler and pass delegates and events
.net, delegates, event-handling, events, vb.net
Solution
It sounds like the problem is that you are mixing types. The click event requires a `System.EventHandler`. Your custom delegate, although it has the same signature as `System.EventHandler`, is not a `System.EventHandler`.
So, you need to change your method take `System.EventHandler` instead of `System.Delegate`:
Public Sub BuildControl(EventHandler as System.EventHandler)
dim objMyButton as new button
AddHandler objMyButton.Click, EventHandler
End Sub
Problem
I am using AddHandler to wire a function to a control's event that I dynamically create: ``` Public Delegate Sub MyEventHandlerDelegate(ByVal sender As Object, ByVal e As System.EventArgs) Public Sub BuildControl(EventHandler as System.Delegate) dim objMyButton as new button AddHandler objMyButton.Click, EventHandler end Sub ``` This code is generating a run-time exception stating: Unable to cast object of type 'MyEventHandlerDelegate' to type 'System.EventHandler' What am I not understanding about System.Delegate even though AddHandler takes as an argument of type "System.Delegate"? What Type does "EventHandler need to be to cast to a type that AddHandler can accept? Thanks for your help!