다음을 통해 공유


AddHandler 문

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

구문

AddHandler event, {AddressOf eventhandler | expression }

부분

요소 설명
event 처리할 이벤트의 이름입니다.
eventhandler 이벤트를 처리하는 프로시저의 이름입니다.
expression 이벤트를 처리하는 람다 식입니다.

AddressOf eventhandlerexpression 부분은 상호 배타적입니다.

설명

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

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

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

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

참고 항목

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

예시

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

참고 항목