DataGridView
Windows フォーム アプリでカスタム コレクションを表示したいと考えています。このカスタム コレクションはICollection
、および を実装しIEnumerable
ます。BindingSource
コレクションを .DataSource プロパティとして使用して、 を設定しました。は、 DataSource であるDataGridView
ため、my を使用するように設定されています。メソッドBindingSource
を使用してコレクションに新しいアイテムを追加すると、新しいアイテムで正しく更新されます。一方、DataSource は次のことを行いません。BindingSource.Add()
DataGridView
BindingSource
MyCustomCollection myCollection = new MyCustomCollection();
myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);
myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);
上記のコードでは、myBindingSource の内部 List には適切な数のレコード (3) が含まれており、これにDataGridView
も 3 つのレコードが含まれていますが、myCollection には 2 つのレコードしか含まれていません。基になる myCollection を変更してもBindingSource
または は更新さDataGridView
れないことはわかっていますが、 aを直接更新すると myCollection も同時に更新されるBindingList<T>
という印象を受けました。BindingSource
ではないコレクションを使用して、直接BindingList<T>
操作するときにコレクションを更新する方法はありますか?BindingSource
Update : すべてのパーツ (Collection、BindingSource、DataGridView) でデータを更新する 1 つの方法は次のとおりです。
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
この問題に対処するためのより良い方法があると確信していますが、これは私が期待していた結果を生成した唯一の方法です。