イベント

イベントの正体

イベントとは、クラスのフィールド(プロパティー)、メソッド、と並ぶクラスメンバの一つです。

クラス内で、RaiseEvent を使って発生させます。

イベントは次の書式で定義する(第一引数はイベントの発生元を取得するためObject、第二引数はSystem.EventArgsクラスまたはそれを継承したクラス)

Public(Private) Event イベント名(ByVal sender As Object, ByVal e As SampleEventArgs)

 

イベントの補足

イベントを捕捉するためにはクラスをインスタンス化する際に「WithEvents」キーワードを付けます。

Public(Private) WithEvents オブジェクト名 As New クラス名()

イベントを捕捉するためのイベントハンドラを作成する

 

 

 

 

イベントとデリゲート

イベントを補足する「イベントハンドラ」の登録は、デリゲートの機能を使って実現しています。

イベントを発生させるクラスでは、イベントが発生した際にコールバックするメソッドの登録場所を公開しておきます。

一方、インスタンス化した側では、イベントを処理する「イベントハンドラ」を登録することでイベントの通知を受けます。

 

イベントハンドラの名前とイベントのハンドリング

VB6やAccessではオブジェクト名_イベント名がイベントプロシジャー名となり、これ以外に変更することはできません。

また1つのイベントに対して必ず1つのイベントハンドラが割り当てられ、1つのイベントハンドラが扱うイベントは一つとなります。

これに対してVB.NETでは次のように自由度が高いです。

  • プロシジャー名は任意
  • 複数のイベントを1つのイベントハンドラに紐づけることが可能
  • 1つのイベントを複数のイベントハンドラに対応させることが可能

参考

クラスにイベントを実装する

第25回 イベントとイベント・ハンドラ