C#にてClass内でのプロパティ変更の通知イベント(INotifyPropertyChanged)の実装方法を説明します。
INotifyPropertyChangedの実装方法
基本的なプロパティ通知の方法ですが、結構めんどうです。
public class PersonProperty : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public string Name { get { return _name; } set { if (_name != value) { _name = value; OnPropertyChanged("Name"); } } } private string _name; public string Age { get { return _Age; } set { if (_Age != value) { _Age = value; OnPropertyChanged("Age"); } } } private string _Age; private void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }
呼び出し側
private void button1_Click(object sender, EventArgs e) { PersonProperty Person = new PersonProperty(); Person.PropertyChanged += PersonPropertyChanged; Person.Name = "みかん"; } Private void PersonPropertyChanged(object sender, PropertyChangedEventArgs e) { // 文字列でプロパティ名を判別 if (e.PropertyName != "Name") return; var p = (PersonProperty)sender; MessageBox.Show(p.Name + "に変更されました"); }