AddHandler 문

런타임에 이벤트를 이벤트 처리기와 연결합니다.

Syntax

AddHandler event, {AddressOf eventhandler | expression }

부분

부분 Description
event 처리할 이벤트의 이름입니다.
eventhandler 이벤트를 처리하는 프로시저의 이름입니다.
expression 이벤트를 처리하는 람다 식입니다.

파트 AddressOf eventhandlerexpression 상호 배타적입니다.

설명

AddHandlerRemoveHandler 문을 사용하면 프로그램 실행 중에 언제든지 이벤트 처리를 시작하고 중지할 수 있습니다.

새 이벤트 처리기( eventhandler 프로시저 또는 expression 람다)의 서명은 이벤트의 event서명과 일치해야 합니다.

Handles 키워드와 AddHandler 문 모두 특정 프로시저에서 특정 이벤트를 처리하도록 지정하는 데 사용할 수 있지만 차이가 있습니다. AddHandler 문은 런타임에 프로시저를 이벤트에 연결합니다. 특정 이벤트를 처리하도록 지정하는 프로시저를 정의할 때 Handles 키워드를 사용합니다. 자세한 내용은 핸들을 참조하세요.

명시적 람다를 사용하여 추가된 처리기는 나중에 제거할 수 없습니다(사용 RemoveHandler). 실제로 람다에 이름이 지정되지 않은 경우 나중에 참조할 수 없습니다. 그러나 변수에 람다를 할당하고 이 변수를 통해 처리기를 추가하면 이 변수를 사용하여 처리기를 제거할 수 있습니다.

참고

사용자 지정 이벤트의 경우 문은 AddHandler 이벤트의 AddHandler 접근자를 호출합니다. 사용자 지정 이벤트에 대한 자세한 내용은 이벤트 문을 참조하세요.

예제

Sub TestEvents()
    Dim Obj As New Class1
    ' Associate an event handler with an event.
    AddHandler Obj.Ev_Event, AddressOf EventHandler
    ' Call the method to raise the event.
    Obj.CauseSomeEvent()
    ' Stop handling events.
    RemoveHandler Obj.Ev_Event, AddressOf EventHandler
    ' This event will not be handled.
    Obj.CauseSomeEvent()
    ' Associate an event handler with an event, using a lambda.
    ' This handler cannot be removed.
    AddHandler Obj.Ev_Event, Sub ()
        MsgBox("Lambda caught event.")
    End Sub
    ' This event will be handled by the lambda above.
    Obj.CauseSomeEvent()
End Sub

Sub EventHandler()
    ' Handle the event.
    MsgBox("EventHandler caught event.")
End Sub

Public Class Class1
    ' Declare an event.
    Public Event Ev_Event()
    Sub CauseSomeEvent()
        ' Raise an event.
        RaiseEvent Ev_Event()
    End Sub
End Class

참고 항목