イベントの利用
アプリケーションでイベントを利用するには、イベントに応答してプログラム ロジックを実行するイベント ハンドラ (イベント処理メソッド) を用意し、そのイベント ハンドラをイベント ソースに登録する必要があります。この処理をイベント接続と呼びます。Windows フォーム用および Web フォーム用のビジュアル デザイナには、イベント接続の詳細を簡単にしたり、隠したりするための、RAD (Rapid Application Development) ツールが用意されています。
このトピックでは、イベント処理の一般的なパターンについて説明します。.NET Framework でのイベント モデルの概要については、「イベントとデリゲート」を参照してください。Windows フォームでのイベント モデルの詳細については、「方法 : Windows フォーム アプリケーションでイベントを利用する」を参照してください。Web フォームでのイベント モデルの詳細については、「方法 : Web フォーム アプリケーションでイベントを利用する」を参照してください。
イベント パターン
異なる RAD ツールによって、異なるレベルのサポートが提供されるため、Windows フォームおよび Web フォームでのイベント接続の詳細は異なります。ただし、どちらのシナリオも同じイベント パターンに準拠し、次に示す特徴を持ちます。
EventName イベントを発生させるクラスには、次のメンバが属しています。
public event EventNameEventHandler EventName;
Public Event EventName As EventNameEventHandler
EventName イベントのイベント デリゲートは EventNameEventHandler で、これは次のシグネチャを持っています。
public delegate void EventNameEventHandler(object sender, EventNameEventArgs e);
Public Delegate Sub EventNameEventHandler(sender As Object, e As EventNameEventArgs)
EventName イベントを利用するには、イベント ハンドラがイベント デリゲートと同じシグネチャを持っている必要があります。
void EventHandler(object sender, EventNameEventArgs e) {}
Sub EventHandler(sender As Object, e As EventNameEventArgs)
メモ : |
---|
.NET Framework では、イベント デリゲートは EventNameEventHandler と命名されますが、このドキュメントでは、イベント ハンドラという用語はイベント処理メソッドを意味しています。名前付け方法の基本的な規則により、EventNameEventHandler デリゲートは実際にイベントを処理するイベント ハンドラ (メソッド) を指します。 |
イベントが関連付けられたデータを持たない場合、イベントを発生させるクラスでは、デリゲートとして System.EventHandler を使用し、イベント データに System.EventArgs を使用します。関連付けられたデータを持つイベントは、イベント データの型の EventArgs から派生したクラスと、それに対応するイベント デリゲート型を使用します。たとえば、Windows フォーム アプリケーションで MouseUp イベントを処理する場合、イベント データ クラスは MouseEventArgs で、イベント デリゲートは MouseEventHandler です。いくつかのマウス イベントは、イベント データの代わりとなる共通のクラスと、共通のイベント デリゲートを使用するため、その名前付け方法は、上で説明した規則と正確には一致しません。マウス イベントの場合、イベント ハンドラは次のシグネチャを持つ必要があります。
void Mouse_Moved(object sender, MouseEventArgs e){}
Sub Mouse_Moved(sender As Object, e As MouseEventArgs)
sender パラメータおよびイベント引数パラメータは、イベント ハンドラにマウス イベントについての詳細情報を提供します。sender オブジェクトは、イベントの発生元を示します。MouseEventArgs パラメータは、イベントを発生させたマウス動作についての詳細情報を提供します。多くのイベント ソースはイベントの詳細データを提供し、多くのイベント ハンドラはイベントを処理する際にイベント固有のデータを使用します。イベント固有のデータを持つイベントを発生させる方法および処理する方法の例については、「方法 : イベントを発生させる/処理する」を参照してください。
メモ : |
---|
イベントは、ユーザー インターフェイス (UI: User Interface) 以外のコンテキストでも発生します。実際、.NET Framework には、イベントを発生させる、UI ではないクラスが数多く含まれています。ただし、すべてのイベントはここで説明したパターンに準拠します。 |
クラスからイベントを発生させる方法については、「イベントの発生」を参照してください。
参照
処理手順
方法 : Web フォーム アプリケーションでイベントを利用する
方法 : Windows フォーム アプリケーションでイベントを利用する