イベント

1.イベントを発生させたいクラスでイベントを宣言(EventHandler ハンドラ名)

 ex)public event EventHandler GetPayRise;

2.イベントを発生させたい箇所で、ハンドラ名(SenderObject(基本は発生させたクラスなのでthis),引数(なければEevntArgs.Empty)

 ex)GetPayRise?.Invoke(this, EventArgs.Empty);

 通常は"onハンドラ名"というメソッドを定義して、その中でイベントを

 発生させる上記メソッドを呼ぶ

 ex)

   OnGetPayRise(EventArgs.Empty);

  protected virtual void OnGetPayRise(EventArgs e)

  {

   GetPayRise?.Invoke(this, e);

  }
  (*)invokeは、Delegate内のメソッドを全て実行するメソッド

  (*)実行前に、Delegate内がNullじゃないか確認を行う

 

3.EventArgsで値を渡したい場合は、EventArgsを継承したクラスを作りその中で必要な

 データを設定

4.その型の変数を、イベント発生させるメソッドに渡す

5.イベント発生の通知を受ける側では、イベントを発生させる

 クラスのインスタンスを持つ

6.そのインスタンスのイベントデリゲート(GetPayRise)に、イベント発生時に行いたいメ

 ソッド(イベントハンドラ)を登録する

https://qiita.com/laughter/items/e9cf666e0430acc39e95