2016-11-29 1 views
0

Google 및 다른 사이트를 통해 처리기 추가, 처리기 제거의 해답을 얻습니다. Msdn의 설명서에 따라 다른 시나리오에서 시작된 이벤트를 처리하기 위해 AddHandle을 사용하여 메서드를 click 이벤트와 연결합니다 (잘못된 방식 일 수 있습니다). 내가 버튼 클릭 이벤트가 LET, 내가하는 방법추가 처리기를 사용하여 단추의 클릭 이벤트를 처리하는 방법, 처리기를 제거합니다.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    End Sub 

그것을 연결할 및 방법은 모두 위의 같은 클래스에서, 또는에있을 때 내가 그들을 처리 할 수있는 방법

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

입니다 다른 클래스. 이 작업을 수행 할 수 있습니까?

AddHandler Button1.Click, AddressOf EventHandler() 
RemoveHandler Button1.Click, AddressOf EventHandler() 

, 적절한 방법으로 안내해주세요.

답변

0

이벤트는 두 가지 방법으로 가입 할 수 있습니다

  1. 직접 처리 (컨트롤, 귀하의 예제에서 버튼을,에서 WithEvents로 선언), 그리고 항상 트리거됩니다가 :

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
        ' Some action 
    End Sub 
    
  2. 동적으로 예를 들어,/탈퇴 이벤트를 구독 :

    Sub test() 
    
        ' Subscribe the handlers based on some criteria 
        If True Then 
         AddHandler Button1.Click, AddressOf EventHandler1 
        Else 
         AddHandler Button1.Click, AddressOf EventHandler2 
        End If 
    
    End Sub 
    
    
    Sub EventHandler1(sender As Object, e As EventArgs) 
    
        ' some action 
    
        ' if you wish to unsubscribe the event, do below 
        RemoveHandler Button1.Click, AddressOf EventHandler1 
    
    End Sub 
    
    Sub EventHandler2(sender As Object, e As EventArgs) 
    
        ' some other action 
    
        ' if you wish to unsbuscribe: 
        RemoveHandler Button1.Click, AddressOf EventHandler2 
    
    End Sub 
    
,

참고 :

  1. 는 여러 핸들러

  2. 핸들러에 이벤트를 구독 할 수 있습니다 내가 방법, 컨트롤을 등록 할 수있는 방법 Handler(Sender as object, e as EventArgs)

+0

의 서명과 일치해야 – SajidBp

관련 문제