在.net中创建自定义事件

Akh*_*iar 5 .net vb.net

我在vb.net中创建了一个控件.现在我希望该控件发送一些消息(触发一个名为recieve的事件),实现它的父应用程序必须创建一个名为recieve的均衡监听器并相应地执行操作.

Han*_*ood 8

这段代码与@ user1057768的答案完全相同,但不用大惊小怪.事件处理程序抛出的任何异常都将通过该OnReceive方法返回,因此您可以在其中或类中的其他位置捕获它们.

Class MyClass
    Public Event Recieve As EventHandler 

    Protected Overridable Sub OnReceive(e As EventArgs)
        RaiseEvent Receive(Me, e)
    End Sub
End Class
Run Code Online (Sandbox Code Playgroud)

Custom Event如果需要特殊代码来处理或引发事件,则只需使用a .


Raj*_*ila 6

Public Custom Event recieve As EventHandler

    AddHandler(ByVal value As EventHandler)
        _handlers.Add(value)
    End AddHandler

    RemoveHandler(ByVal value As EventHandler)
        If _handlers.Contains(value) Then
            _handlers.Remove(value)
        End If
    End RemoveHandler

    RaiseEvent(ByVal sender As Object, ByVal e As System.EventArgs)
        For Each handler As EventHandler In _handlers
            Try
                handler.Invoke(sender, e)
            Catch ex As Exception
                Debug.WriteLine("Exception while invoking event handler: " & ex.ToString())
            End Try
        Next
    End RaiseEvent
End Event
Run Code Online (Sandbox Code Playgroud)

然后你可以通过输入来举起活动

Dim raise As New System.EventArgs
RaiseEvent recieve(sender, raise)
Run Code Online (Sandbox Code Playgroud)

代码中的任何位置.

  • 什么变量是`_handlers`? (3认同)
  • 或者,您可以使用单行`Public Event recieve As EventHandler`并获得与所有代码相同的效果减去异常处理. (2认同)