如何使BindingSource意识到其数据源中的更改

本文关键字:数据源 何使 BindingSource 意识到 | 更新日期: 2023-09-27 18:07:22

我有一个:

someBindingSource.DataSource = someDataSource;

我也这样做:

someDataSource = foo();

foo()对另一个数据源的不同数据执行new

我不认为每次数据源改变时都做分配是正确的,即:

someDataSource = foo();
someBindingSource.DataSource = someDataSource;

那么有没有办法让someBindingSource意识到someDataSource的变化呢?

如何使BindingSource意识到其数据源中的更改

如果数据源实现了IBindingList接口,那么BindingSource将被告知向数据源添加或删除项目。BindingList<T>是一个很好的实现。

如果数据源的项目实现了INotifyPropertyChanged,那么BindingSource也会收到项目更改的通知。

在上述情况下,ListChanged事件将被引发。

注意

  1. 注意,如果你分配someBindingSource.DataSource = someThing;,然后someThing = new SomeThing();,因为someBindingSource.DataSource是指向前一个对象,没有变化,不会有通知。
  2. DataSourceChanged事件将在您为BindingSourceDataSource分配新值后引发,因此在之前的someThing = new SomeThing();之后,如果您执行someBindingSource.DataSource = someThing;,则DataSourceChanged将被引发。