次の方法で共有


Handles

更新 : 2007 年 11 月

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

proceduredeclaration Handles eventlist

指定項目

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

  • eventlist
    proceduredeclaration が処理するイベントのリスト。現在のクラスに対する基本クラス、または WithEvents キーワードを使って宣言されているオブジェクトのどちらかが発生させるイベントを指定する必要があります。

解説

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

プロシージャのシグネチャは、eventlist の各イベントのシグネチャと一致している必要があります。

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

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

使用例

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

参照

概念

イベントとイベント ハンドラ

参照

WithEvents

AddHandler ステートメント

RemoveHandler ステートメント

Event ステートメント

RaiseEvent ステートメント