次の方法で共有


Visual Basic でイベント ハンドラーを呼び出す方法

イベントとは、マウス クリックや与信限度額を超えたなどのアクションまたは発生であり、一部のプログラム コンポーネントによって認識され、応答するコードを記述できます。 イベント ハンドラーは、イベントに応答するために記述するコードです。

Visual Basic のイベント ハンドラーは、 Sub プロシージャです。 ただし、通常、他の Sub プロシージャと同じ方法で呼び出すわけではありません。 代わりに、プロシージャをイベントのハンドラーとして識別します。 これを行うには、 Handles 句と WithEvents 変数を使用するか、 AddHandler ステートメントを使用します。 Visual Basic でイベント ハンドラーを宣言する既定の方法は、 Handles 句を使用することです。 これは、統合開発環境 (IDE) でプログラムを実行するときにデザイナーによってイベント ハンドラーが記述される方法です。 AddHandler ステートメントは、実行時に動的にイベントを発生させるのに適しています。

イベントが発生すると、Visual Basic によってイベント ハンドラー プロシージャが自動的に呼び出されます。 イベントにアクセスできるコードは、 RaiseEvent ステートメントを実行することによって発生する可能性があります。

同じイベントに複数のイベント ハンドラーを関連付けることができます。 場合によっては、イベントからハンドラーの関連付けを解除できます。 詳細については、「イベント」を参照してください。

Handlesを使用してイベント ハンドラーを呼び出すWithEvents

  1. イベントが Event ステートメントで宣言されていることを確認 します

  2. WithEvents キーワードを使用して、モジュールまたはクラス レベルでオブジェクト変数を宣言します。 この変数の As 句では、イベントを発生させるクラスを指定する必要があります。

  3. イベント処理Subプロシージャの宣言で、WithEvents変数とイベント名を指定するHandles句を追加します。

  4. イベントが発生すると、Visual Basic は自動的に Sub プロシージャを呼び出します。 コードでは、 RaiseEvent ステートメントを使用してイベントを発生させることができます。

    次の例では、イベントを発生させるクラスを参照するイベントと WithEvents 変数を定義します。 イベント処理 Sub プロシージャでは、 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 を使用してイベント ハンドラーを呼び出す

  1. イベントが Event ステートメントで宣言されていることを確認します。

  2. AddHandler ステートメントを実行して、イベント処理Subプロシージャをイベントに動的に接続します。

  3. イベントが発生すると、Visual Basic は自動的に Sub プロシージャを呼び出します。 コードでは、 RaiseEvent ステートメントを使用してイベントを発生させることができます。

    次の例では、コンストラクターの AddHandler ステートメント を使用して、 OnFormClosing プロシージャを 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 ステートメントを実行することで、イベント ハンドラーをイベントから関連付け解除できます。

こちらも参照ください