Custom event handler : Event « Event « VB.Net Tutorial






Imports System.Collections
Delegate Sub NameChangedDelegate(ByVal new_name As String)

public class Test
   Private WithEvents emp As Employee
   public Shared Sub Main

        Dim emp As New Employee
        AddHandler emp.NameChanged, AddressOf Employee_NameChanged
        AddHandler emp.NameChanged, AddressOf Employee_NameChanged
        emp.FirstName = "Rod"
        RemoveHandler emp.NameChanged, AddressOf Employee_NameChanged
        emp.LastName = "Stephens"
        RemoveHandler emp.NameChanged, AddressOf Employee_NameChanged

   End Sub

    Private Shared Sub Employee_NameChanged(ByVal new_name As String) Handles emp.NameChanged
        Console.WriteLine("Employee_NameChanged: " & new_name)
    End Sub

End class

Public Class Employee
    Private m_FirstName As String
    Public Property FirstName() As String
        Get
            Return m_FirstName
        End Get
        Set(ByVal value As String)
            m_FirstName = value
            RaiseEvent NameChanged(m_FirstName & " " & m_LastName)
        End Set
    End Property

    Private m_LastName As String
    Public Property LastName() As String
        Get
            Return m_LastName
        End Get
        Set(ByVal value As String)
            m_LastName = value
            RaiseEvent NameChanged(m_FirstName & " " & m_LastName)
        End Set
    End Property

    Private m_EventDelegates As New ArrayList

    Public Delegate Sub NameChangedDelegate(ByVal new_name As String)

    Public Custom Event NameChanged As NameChangedDelegate
        AddHandler(ByVal value As NameChangedDelegate)
            Console.WriteLine("AddHandler")
            m_EventDelegates.Add(value)
        End AddHandler

        RemoveHandler(ByVal value As NameChangedDelegate)
            Console.WriteLine("RemoveHandler")
            m_EventDelegates.Remove(value)
        End RemoveHandler

        RaiseEvent(ByVal new_name As String)
            Console.WriteLine("RaiseEvent (" & new_name & ")")
            For Each a_delegate As NameChangedDelegate In m_EventDelegates
                a_delegate(new_name.Replace(" ", "+"))
            Next a_delegate
        End RaiseEvent
    End Event
End Class
AddHandler
AddHandler
RaiseEvent (Rod )
Employee_NameChanged: Rod+
Employee_NameChanged: Rod+
RemoveHandler
RaiseEvent (Rod Stephens)
Employee_NameChanged: Rod+Stephens
RemoveHandler








11.1.Event
11.1.1.Raise Events
11.1.2.Multiple Event Handler
11.1.3.Event handler
11.1.4.Subclass EventArgs to create your own event arguments
11.1.5.Inherit Event
11.1.6.Custom event handler
11.1.7.WithEvents and Event method
11.1.8.Add and remove event handlerAdd and remove event handler
11.1.9.Handle events from more than one componentsHandle events from more than one components
11.1.10.Add, remove event handler to/from ToggleButtonAdd, remove event handler to/from ToggleButton
11.1.11.Use one method to handle more than one RadioButton click eventUse one method to handle more than one RadioButton click event
11.1.12.Get event sender typeGet event sender type
11.1.13.Instantiating the Action<(Of <(T>)>) delegate rather than explicitly defining a new delegate and assigning a named method