| ■No99448 (あいす さん) に返信 > C#でボタンをクリックしたら発生するイベントのように > 自分が用意したフラグが変化したら発生するイベントを > 作りたいのですがどのようにすればいいのでしょうか。
フラグは変数ではなくプロパティとして実装しておけば、 setter によって「フラグが変更された時」を捕らえる事ができますね。
プロパティの代わりに、「フラグを更新するためのメソッド」を作る方法でも良いですが。
肝心のイベントの宣言は、自作クラス内で 「public event EventHandler YourEventName;」 のようにすれば OK。
作ったイベントを発生させるのは YourEventName?.Invoke(this, EventArgs.Empty); という構文です。
たとえば上記を内部から呼びやすくするため、 protected virtual void OnYourEventName(EventArgs e) { YourEventName?.Invoke(this, e); } などを用意しておき、「フラグが変化した時」に、自クラスまたは継承クラスから 『OnYourEventName(EventArgs.Empty);』で呼び出すようにします。
イベントの利用側は、ボタンクリックの button1.Click += ……; と同様に、 foo.YourEventName += ……; のように割り当てて使います。
もしもイベント引数に追加情報を持たせい場合には、 「EventArgs を継承した、自作の HogeEventArgs クラス」を作り、 そこに追加のプロパティやメソッドを実装し、下記のように変更します。
//public event EventHandler YourEventName; public event EventHandler<HogeEventArgs> YourEventName; |