Visual Basic でイベント ハンドラーを呼び出す方法How to call an event handler in Visual Basic

"イベント" とは、何らかのプログラム コンポーネントによって認識されるアクションまたは発生 (マウス クリックやクレジット限度額の超過など) であり、それらに対して応答するコードを記述することができます。An event is an action or occurrence — such as a mouse click or a credit limit exceeded — that is recognized by some program component, and for which you can write code to respond. "イベント ハンドラー" とは、イベントに応答するために記述するコードです。An event handler is the code you write to respond to an event.

Visual Basic のイベント ハンドラーは Sub プロシージャです。An event handler in Visual Basic is a Sub procedure. ただし、通常は、これを他の Sub プロシージャと同じ方法で呼び出すことはありません。However, you do not normally call it the same way as other Sub procedures. 代わりに、プロシージャをイベントのハンドラーとして指定します。Instead, you identify the procedure as a handler for the event. これを行うには、Handles 句と WithEvents 変数を使用することも、AddHandler ステートメントを使用することもできます。You can do this either with a Handles clause and a WithEvents variable, or with an AddHandler Statement. Handles 句の使用が、Visual Basic でイベント ハンドラーを宣言する場合の既定の方法となります。Using a Handles clause is the default way to declare an event handler in Visual Basic. 統合開発環境 (IDE) でプログラミングする場合、デザイナーではこの方法を使用してイベント ハンドラーが記述されます。This is the way the event handlers are written by the designers when you program in the integrated development environment (IDE). AddHandler ステートメントは、実行時にイベントを動的に発生させるのに適しています。The AddHandler statement is suitable for raising events dynamically at run time.

イベントが発生すると、イベント ハンドラー プロシージャが Visual Basic によって自動的に呼び出されます。When the event occurs, Visual Basic automatically calls the event handler procedure. イベントへのアクセス権を持つコードいずれも、RaiseEvent ステートメントを実行することによってそれを発生させることができます。Any code that has access to the event can cause it to occur by executing a RaiseEvent Statement.

複数のイベント ハンドラーを同じイベントに関連付けることができます。You can associate more than one event handler with the same event. 場合によっては、ハンドラーとイベントとの関連付けを解除することができます。In some cases you can dissociate a handler from an event. 詳細については、「イベント」を参照してください。For more information, see Events.

Handles と WithEvents を使用してイベント ハンドラーを呼び出すCall an event handler using Handles and WithEvents

  1. Event ステートメントを使用してイベントが宣言されていることを確認します。Make sure the event is declared with an Event Statement.

  2. WithEvents キーワードを使用して、モジュール レベルまたはクラス レベルでオブジェクト変数を宣言します。Declare an object variable at module or class level, using the WithEvents keyword. この変数の As 句で、イベントを発生させるクラスを指定する必要があります。The As clause for this variable must specify the class that raises the event.

  3. イベント処理プロシージャ Sub の宣言内に、WithEvents 変数とイベント名を指定する Handles 句を追加します。In the declaration of the event-handling Sub procedure, add a Handles clause that specifies the WithEvents variable and the event name.

  4. イベントが発生すると、Sub プロシージャが Visual Basic によって自動的に呼び出されます。When the event occurs, Visual Basic automatically calls the Sub procedure. コードでは、RaiseEvent ステートメントを使用してイベントを発生させることができます。Your code can use a RaiseEvent statement to make the event occur.

    次の例では、イベントと共に、そのイベントを発生させるクラスを参照する WithEvents 変数を定義します。The following example defines an event and a WithEvents variable that refers to the class that raises the event. イベント処理プロシージャ Sub では、Handles 句を使用して、処理するクラスとイベントが指定されます。The event-handling Sub procedure uses a Handles clause to specify the class and event it handles.

    Public Class RaisesEvent
        Public Event SomethingHappened()
        Dim WithEvents happenObj As New RaisesEvent
        Public Sub ProcessHappen() Handles happenObj.SomethingHappened
            ' Insert code to handle somethingHappened event.
        End Sub
    End Class
    

AddHandler を使用してイベント ハンドラーを呼び出すCall an event handler using AddHandler

  1. Event ステートメントを使用してイベントが宣言されていることを確認します。Make sure the event is declared with an Event statement.

  2. AddHandler ステートメントを実行して、イベント処理プロシージャ Sub をイベントに動的に接続します。Execute an AddHandler statement to dynamically connect the event-handling Sub procedure with the event.

  3. イベントが発生すると、Sub プロシージャが Visual Basic によって自動的に呼び出されます。When the event occurs, Visual Basic automatically calls the Sub procedure. コードでは、RaiseEvent ステートメントを使用してイベントを発生させることができます。Your code can use a RaiseEvent statement to make the event occur.

    次の例では、コンストラクターの AddHandler ステートメントを使用し、OnFormClosing プロシージャを FormClosing のイベント ハンドラーとして関連付けます。The following example uses the AddHandler statement in the constructor to associate the OnFormClosing procedure as an event handler for FormClosing.

    Sub New()
        InitializeComponent()
        AddHandler Me.FormClosing, AddressOf OnFormClosing
    End Sub
    
    Private Sub OnFormClosing(sender As Object, e As FormClosingEventArgs)
        ' Insert code to deal with impending closure of this form.
    End Sub
    

    イベント ハンドラーとイベントの関連付けを解除するには、RemoveHandler ステートメントを実行します。You can dissociate an event handler from an event by executing the RemoveHandler statement.

関連項目See also