Handles 句 (Visual Basic)

プロシージャが指定されたイベントを処理することを宣言します。

構文

proceduredeclaration Handles eventlist

指定項目

proceduredeclaration イベントを処理するプロシージャの Sub プロシージャ宣言。

eventlist コンマで区切られた、proceduredeclaration が処理するイベントの一覧。 イベントは、現在のクラスの基底クラス、または WithEvents キーワードを使用して宣言されたオブジェクトによって発生する必要があります。

Remarks

プロシージャ宣言の最後で Handles キーワードを使用すると、 WithEvents キーワードで宣言されたオブジェクト変数によって発生したイベントが処理されるようになります。 また、Handles キーワードを派生クラスで使用すると、基底クラスからのイベントを処理することもできます。

Handles キーワードと AddHandler ステートメントはどちらも特定のプロシージャで特定のイベントを処理するように指定できますが、両者には違いがあります。 Handles キーワードは、プロシージャの定義時に特定のイベントを処理するよう指定する場合に使用します。 AddHandler ステートメントは、実行時にプロシージャをイベントに接続します。 詳細については、「AddHandler ステートメント」を参照してください。

カスタム イベントの場合、アプリケーションは、プロシージャをイベント ハンドラーとして追加するときにイベントの AddHandler アクセサーを呼び出します。 カスタム イベントの詳細については、「Event ステートメント」を参照してください。

例 1

Public Class ContainerClass
    ' Module or class level declaration.
    WithEvents Obj As New Class1

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

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

    ' Call the TestEvents procedure from an instance of the ContainerClass 
    ' class to test the Ev_Event event and the event handler.
    Public Sub TestEvents()
        Obj.CauseSomeEvent()
    End Sub
End Class

派生クラスで Handles ステートメントを使用して基底クラスからのイベントを処理する方法を次の例に示します。

Public Class BaseClass
    ' Declare an event.
    Event Ev1()
End Class
Class DerivedClass
    Inherits BaseClass
    Sub TestEvents() Handles MyBase.Ev1
        ' Add code to handle this event.
    End Sub
End Class

例 2

次の例には、WPF アプリケーション プロジェクトの 2 つのボタン イベント ハンドラーが含まれています。

Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

例 3

次の例は、前の例と同じです。 Handles 句の eventlist には 2 つのボタンのイベントが含まれています。

Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click, Button2.Click
    MessageBox.Show(sender.Name & " clicked")
End Sub

関連項目