for WPF developers
Home Profile Tips 全記事一覧

独自イベントの作成方法

(2016/12/03 0:04:32 created.)

独自クラスを作成していると、イベントを飛ばしたくなる時があります。C# では event 修飾子を用いてイベントハンドラのデリゲートを定義する必要があります。

Program.cs
  1. namespace Tips_CustomEvent
  2. {
  3.     using System;
  4.  
  5.     /// <summary>
  6.     /// 設定を表します。
  7.     /// </summary>
  8.     public class Settings
  9.     {
  10.         private string _name;
  11.         /// <summary>
  12.         /// 名前を取得または設定します。
  13.         /// </summary>
  14.         public string Name
  15.         {
  16.             get { return this._name; }
  17.             set
  18.             {
  19.                 if (this._name != value)
  20.                 {
  21.                     this._name = value;
  22.                     RaiseNameChanged();
  23.                 }
  24.             }
  25.         }
  26.  
  27.         /// <summary>
  28.         /// Name プロパティ変更時に発生します。
  29.         /// </summary>
  30.         public event EventHandler<EventArgs> NameChanged;
  31.  
  32.         /// <summary>
  33.         /// NameChanged イベントを発行します。
  34.         /// </summary>
  35.         protected virtual void RaiseNameChanged()
  36.         {
  37.             var h = this.NameChanged;
  38.             if (h != null) h(this, EventArgs.Empty);
  39.         }
  40.     }
  41. }

このサンプルコードでは、NameChanged という名前のイベントを持っており、Name プロパティの set アクセサ内で、プロパティ値に変更があったときに RaiseNameChanged() メソッドをコールすることで NameChanged イベントを発行しています。