次の方法で共有


Handles 句 (Visual Basic)

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

構文

proceduredeclaration Handles eventlist

部品

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

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

注釈

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

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

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

例 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には、両方のボタンのイベントが含まれています。

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

こちらも参照ください