如何让 BindingSource 知道其 DataSource 的变化?
How to make a BindingSource aware of changes in its DataSource?
我有一个:
someBindingSource.DataSource = someDataSource;
我也是:
someDataSource = foo();
foo()
对具有不同数据的另一个数据源执行 new
。
我认为每次数据源改变时都进行赋值是不正确的,即:
someDataSource = foo();
someBindingSource.DataSource = someDataSource;
那么有没有办法让 someBindingSource
意识到 someDataSource
的变化?
如果数据源实现了IBindingList
inteface, then the BindingSource
will be informed of adding or removing items to the data source. A good implementation to use is BindingList<T>
.
此外,如果数据源的项目实施 INotifyPropertyChanged
,则 BindingSource
也会收到项目更改的通知。
在上述情况下 ListChanged
将引发事件。
备注
- 注意,如果你赋值
someBindingSource.DataSource = someThing;
,然后赋值someThing = new SomeThing();
,因为someBindingSource.DataSource
指向之前的对象,没有变化也不会有通知。
DataSourceChanged
事件将在您为 BindingSource
的 DataSource
分配新值后引发,因此在 someThing = new SomeThing();
之前的情况下,如果您执行 [=16] =] 那么 DataSourceChanged
将被提升。
我有一个:
someBindingSource.DataSource = someDataSource;
我也是:
someDataSource = foo();
foo()
对具有不同数据的另一个数据源执行 new
。
我认为每次数据源改变时都进行赋值是不正确的,即:
someDataSource = foo();
someBindingSource.DataSource = someDataSource;
那么有没有办法让 someBindingSource
意识到 someDataSource
的变化?
如果数据源实现了IBindingList
inteface, then the BindingSource
will be informed of adding or removing items to the data source. A good implementation to use is BindingList<T>
.
此外,如果数据源的项目实施 INotifyPropertyChanged
,则 BindingSource
也会收到项目更改的通知。
在上述情况下 ListChanged
将引发事件。
备注
- 注意,如果你赋值
someBindingSource.DataSource = someThing;
,然后赋值someThing = new SomeThing();
,因为someBindingSource.DataSource
指向之前的对象,没有变化也不会有通知。 DataSourceChanged
事件将在您为BindingSource
的DataSource
分配新值后引发,因此在someThing = new SomeThing();
之前的情况下,如果您执行 [=16] =] 那么DataSourceChanged
将被提升。