Hallo! Ich verstehe den Sinn des Interfaces nicht. Gut, das ermöglicht, beide Klassen in ein Array zu stopfen, aber das hat mit den Events doch nix zu tun. Wenn beide Klassen dasselbe Event nutzen, kann man das auch ohne Interface auf denselben Handler leiten:Option Explicit On Option Strict On Option Compare Binary
Public Class SampleEventArgs : Inherits System.EventArgs
Private m_strData As String
Public Sub New(ByVal strData As String) m_strData = strData End Sub
Public Property Data() As String Get Return m_strData End Get Set(ByVal Value As String) m_strData = Value End Set End Property End Class
Public Class MyClassOne
Public Event SampleEvent(ByVal sender As Object, ByVal e As SampleEventArgs)
Public Sub RaiseMyEvent() RaiseEvent SampleEvent(Me, _ New SampleEventArgs("Ich wurde aus MyClassOne ausgelöst!")) End Sub End Class
Public Class MyClassTwo
Public Event SampleEvent(ByVal sender As Object, ByVal e As SampleEventArgs)
Public Sub RaiseMyEvent() RaiseEvent SampleEvent(Me, _ New SampleEventArgs("Ich wurde aus MyClassTwo ausgelöst!")) End Sub End Class
Public Class Main
Public Shared Sub Main() Dim mco As New MyClassOne Dim mct As New MyClassTwo AddHandler mco.SampleEvent, AddressOf SampleEventHandler AddHandler mct.SampleEvent, AddressOf SampleEventHandler mco.RaiseMyEvent() mct.RaiseMyEvent() RemoveHandler mco.SampleEvent, AddressOf SampleEventHandler RemoveHandler mct.SampleEvent, AddressOf SampleEventHandler
System.Console.ReadLine() End Sub
Private Shared Sub SampleEventHandler( _ ByVal sender As Object, _ ByVal e As SampleEventArgs) System.Console.WriteLine("{0}: {1}", sender.GetType(), e.Data) End Sub
End Class |