2014年3月20日木曜日

C# カスタムイベントの作成

カスタムイベントを作成してみた


変更イベントを発生させる側
 // ステータス管理クラス
 public class StatusManager
 {
  // ステータス変更イベント
  public event EventHandler StatusChanged;

  // ステータス
  private int _status;

  // [Property]ステータス
  public int Status
  {
   get { return this._status; }
   set
   {
    // ステータスに変更があれば、イベントを発生させる
    if (this._status != value)
    {
     this._status = value;
     if (this.StatusChanged != null)
     {
      this.StatusChanged(this, new EventArgs());
     }
    }
   }
  }
 }

変更イベントの発生により、実際に処理する側
 // メイン画面クラス
 public class MainForm
 {

  // ステータス管理クラス
  private StatusManager _manager;

  // コンストラクタ
  public TeMainFormst(StatusManager manager)
  {
   // インスタンスの格納
   _manager = manager;
   // ステータス変更イベントの追加
   _manager.StatusChanged += this.UpdateUI;
  }

  // フォームクロージング
  private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
  {
   // ステータス変更イベントの削除
   if (_manager != null)
   {
    _manager.StatusChanged -= this.UpdateUI;
   }
  }

  // ステータス管理クラスのステータス変更イベントが発生した時に処理するための関数
  private void UpdateUI(object sender, EventArgs args)
  {
   // ToDo : 以下に処理を記述する
  }

 }