Mega Code Archive

 
Categories / VB.Net Tutorial / Event
 

Custom event handler

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         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+ RemoveHandler RaiseEvent (Rod Stephens) Employee_NameChanged: Rod+Stephens RemoveHandler