Use Delegate to react to an Event : Event « Development « VB.Net






Use Delegate to react to an Event

Use Delegate to react to an Event
Imports System
Imports System.Collections

Delegate Sub NameChangedDelegate(ByVal new_name As String)

Public Class MainClass
    
    Shared Sub Main(ByVal args As String())
        Dim student As New Student
        AddHandler student.NameChanged, AddressOf Student_NameChanged
        AddHandler student.NameChanged, AddressOf Student_NameChanged
        student.FirstName = "First Name"
        RemoveHandler student.NameChanged, AddressOf Student_NameChanged
        student.LastName = "Last Name"
        RemoveHandler student.NameChanged, AddressOf Student_NameChanged
    End Sub
    Private WithEvents student As Student

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

    
End Class
  
Public Class Student
    ' The FirstName property.
    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

    ' The LastName 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

    ' List to hold the event handler delegates.
    Private m_EventDelegates As New ArrayList

    ' Defines the event handler signature.
    Public Delegate Sub NameChangedDelegate(ByVal new_name As String)

    ' Define the custom NameChanged event.
    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

           
       








Related examples in the same category

1.Define and fire eventDefine and fire event