vb.net,不能直接调用事件

时间:2012-03-27 20:13:32

标签: asp.net vb.net event-handling

我有一段代码:

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.

如何修复此功能?

3 个答案:

答案 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的注释:

  

如果事件尚未在模块中声明   提出,发生错误。以下片段说明了一个事件   声明和提出事件的程序。