独自のイベント引数を作る
プログラミングC# 第6版 5.8
イベントの続きです。
前回キャンセル用のイベント引数CancelEventArgsについて勉強しましたが、このイベント引数は独自に定義することもできます。
というわけでCancelEventArgsと同じくCancelを持つ独自のイベント引数を作ってみます。
using System; // EventArgsから派生すること class MyEventArgs : EventArgs { public bool Cancel; } class CClass { // MyEventArgsを指定 public event EventHandler<MyEventArgs> Begin; public void Proc () { if ( Begin != null ) { // MyEventArgsを渡す MyEventArgs ce = new MyEventArgs(); Begin(this,ce); // イベント中にキャンセルが発生していたらProcの処理を中断する if ( ce.Cancel == true ) { Console.WriteLine("CClass.Proc Cancel"); return; } } Console.WriteLine("CClass.Proc"); } } class Program { static void Main () { CClass cobj = new CClass(); cobj.Begin += (sender,e) => { Console.WriteLine("Begin1"); }; cobj.Begin += (sender,e) => { Console.WriteLine("Begin2"); // キャンセル発生! e.Cancel = true; }; cobj.Proc(); } }
$ main Begin1 Begin2 CClass.Proc Cancel
できました。非常に簡単ですね。