我有一段代码:
innerchannel.Closing += Function(sender, e)
RaiseEvent Closing(sender, e)
End Function
存在问题
innerchannel.Closing
VisualStudio在告诉我:
Public Event Closing(sender As Object, e As System.EventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
如何修复此功能?
答案 0 :(得分:7)
我假设您要为Closing-event添加处理程序:
AddHandler innerchannel.Closing, AddressOf Closed
如果您想举起自定义事件,例如在UserControl
:
Class Channel
Inherits UserControl
Public Event Closing(ch As Channel)
' this could be for example a button-click handler
Protected Sub Closed(sender As Object, e As System.EventArgs)
RaiseEvent Closing(Me)
End Sub
End Class
答案 1 :(得分:6)
您不在VB中使用+=
来添加事件处理程序。您使用AddHandler
。
您的代码正在尝试调用Closing
,就好像它是一个函数并对其结果执行添加。
答案 2 :(得分:4)
第一,你必须将方法附加到事件处理程序,如下所示:
AddHandler innerchannel.Closing, AddressOf Closed
并使用RaiseEvent
来自msdn的注释:
如果事件尚未在模块中声明 提出,发生错误。以下片段说明了一个事件 声明和提出事件的程序。