2016-11-29 16 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

イベントは、2つの方法で購読することができます。

  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

関連する問題