C# オブジェクトのメソッドによって発生される引数がイベントの発生について記述している EventArgs の使用方法
C#のEventArgsはイベント関連のデータを渡す汎用的なイベント引数クラスです。EventArgsを使用する手順は次のとおりです。
- EventArgsを継承したカスタムイベント引数クラスを作成します。例:
public class MyEventArgs : EventArgs
{
public string Message { get; set; }
public MyEventArgs(string message)
{
Message = message;
}
}
- カスタムイベント引数を使用する、イベントを含んだクラスにイベントを定義する。
public class MyClass
{
public event EventHandler<MyEventArgs> MyEvent;
public void RaiseEvent(string message)
{
MyEventArgs args = new MyEventArgs(message);
OnMyEvent(args);
}
protected virtual void OnMyEvent(MyEventArgs e)
{
MyEvent?.Invoke(this, e);
}
}
- イベントを処理するイベントハンドラをサブスクライブする。
public class Program
{
public static void Main(string[] args)
{
MyClass obj = new MyClass();
obj.MyEvent += Obj_MyEvent;
obj.RaiseEvent("Hello world");
}
private static void Obj_MyEvent(object sender, MyEventArgs e)
{
Console.WriteLine(e.Message);
}
}
この例では、MyEvent イベントは MyClass インスタンスの RaiseEvent メソッドが呼び出されると発生します。Main メソッドでは、我々はイベントをサブスクライブしており、イベントは Obj_MyEvent メソッドで処理されます。イベント処理メソッドは、MyEventArgs パラメーターを使用して渡されたメッセージを取得し、コンソールに出力します。
イベントを定義するときは、TEventArgs がカスタムのイベント引数タイプであるジェネリックデリゲート EventHandler を使います。イベントをトリガーするときは、引数として EventArgs のサブクラスのオブジェクトを使います。