私はよく知っている必要がある状況に問題がありますので、解決策が簡単であると思っています。オブジェクトのリスト<を含むオブジェクトがあります。また、リスト<>(実際にバインディングリスト<>にバインドできるので、オブジェクトの集計データを反映するいくつかのプロパティもあります)。私のフォームでは、List用のDataGridViewと、集計データ用のいくつかのフィールドがあります。 DataGridViewの値が変更されたときに、集計データの更新をトリガーする方法を理解できません。Winformsリストを含むデータバインディングオブジェクト<T>
Listのオブジェクトのプロパティが変更されたときにPropertyChangedイベントを発生させようとしましたが、集計データの表示が更新されないようです。集約プロパティにアクセスすると(メッセージボックスに表示するなど)、メインフォームのテキストボックスが更新されます。
は、ここで私は何をしようとしている説明するためにいくつかの単純化されたコードです:
namespace WindowsFormsApplication1 {
public class Person {
public int Age {
get;
set;
}
public String Name {
get;
set;
}
}
public class Roster : INotifyPropertyChanged {
public BindingList<Person> People {
get;
set;
}
public Roster() {
People = new BindingList<Person>();
}
private int totalage;
public int TotalAge {
get {
calcAges();
return totalage;
}
set {
totalage = value;
NotifyPropertyChanged("TotalAge");
}
}
private void calcAges() {
int total = 0;
foreach (Person p in People) {
total += p.Age;
}
TotalAge = total;
}
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged (String info) {
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
#endregion
}
}
これはhttp://stackoverflow.com/questions/601320/winforms-data-binding-bind-to-objects-in-a-listと非常によく似ており、重複している可能性があります。 –