如何使BindingSource意识到其数据源中的更改
本文关键字:数据源 何使 BindingSource 意识到 | 更新日期: 2023-09-27 18:07:22
我有一个:
someBindingSource.DataSource = someDataSource;
我也这样做:
someDataSource = foo();
foo()
对另一个数据源的不同数据执行new
。
我不认为每次数据源改变时都做分配是正确的,即:
someDataSource = foo();
someBindingSource.DataSource = someDataSource;
那么有没有办法让someBindingSource
意识到someDataSource
的变化呢?
如果数据源实现了IBindingList
接口,那么BindingSource
将被告知向数据源添加或删除项目。BindingList<T>
是一个很好的实现。
如果数据源的项目实现了INotifyPropertyChanged
,那么BindingSource
也会收到项目更改的通知。
在上述情况下,ListChanged
事件将被引发。
注意
- 注意,如果你分配
someBindingSource.DataSource = someThing;
,然后someThing = new SomeThing();
,因为someBindingSource.DataSource
是指向前一个对象,没有变化,不会有通知。 -
DataSourceChanged
事件将在您为BindingSource
的DataSource
分配新值后引发,因此在之前的someThing = new SomeThing();
之后,如果您执行someBindingSource.DataSource = someThing;
,则DataSourceChanged
将被引发。