.net 了解AddHandler并传递委托和事件

.net 了解AddHandler并传递委托和事件,.net,vb.net,events,event-handling,delegates,.net,Vb.net,Events,Event Handling,Delegates,我正在使用AddHandler将函数连接到我动态创建的控件事件: 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 ob

我正在使用AddHandler将函数连接到我动态创建的控件事件:

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
此代码正在生成运行时异常,说明:

无法将类型为“MyEventHandlerDelegate”的对象强制转换为类型为“System.EventHandler”


即使AddHandler将“System.Delegate”类型的参数作为参数,我对System.Delegate还有什么不理解的?你是什么类型的“需要将EventHandler强制转换为AddHandler可以接受的类型?感谢您的帮助

传递给BuildControl的委托类型为
MyEventHandlereLegate
。你能给我们看一下那位代表的签名吗?可能是代理的签名与按钮所需的签名不匹配。请单击事件。

听起来问题在于您正在混合类型。单击事件需要一个
System.EventHandler
。您的自定义委托虽然与
System.EventHandler
具有相同的签名,但它不是
System.EventHandler

因此,您需要更改方法take
System.EventHandler
,而不是
System.Delegate

Public Sub BuildControl(EventHandler as System.EventHandler)
     dim objMyButton as new button
     AddHandler objMyButton.Click, EventHandler
End Sub

我加上了代表签名。这正是我想出来的!谢谢你的帮助。