BindingManagerBase 类的应用

查帮助可得

管理绑定到相同数据源和数据成员的所有 Binding 对象。该类为抽象类。

BindingManagerBase 允许对 Windows 窗体上绑定到相同数据源的数据绑定控件进行同步。(若要将控件简单绑定到数据源,请将一个 Binding 对象添加到该控件的 ControlBindingsCollection,它通过 DataBindings 属性来访问)。例如,假定某窗体包含两个 TextBox 控件,它们绑定到相同数据源的不同列(数据源可以是包含客户名称的 DataTable,而列可能包含名字和姓氏)。这两个控件必须同步以便一起显示同一客户的正确姓名。从 BindingManagerBase 类继承的 CurrencyManager 通过维护指向列表当前项的指针来完成该同步。TextBox 控件被绑定到当前项,因此它们显示同一行的信息。在当前项更改时,CurrencyManager 通知所有绑定控件,以便它们能够刷新它们的数据。此外,您可以设置 Position 属性来指定控件所指向的 DataTable 中的行。若要确定列表中存在的行数,请使用 Count 属性。

CurrencyManager 很有必要,因为数据源未必维护当前项的指针。例如,数组和 ArrayList 对象可以是数据源,但它们没有返回当前项的属性。若要获取当前项,请使用 Current 属性。

PropertyManager 也从 BindingManagerBase 继承,并且它用于维护对象的当前属性,而不是列表中当前对象的属性。因此,试图为 PropertyManager 设置 Position 属性或 Count 属性无效。

若要创建 BindingManagerBase 对象,请使用 BindingContext 类,它根据所管理的数据源返回 CurrencyManagerPropertyManager

对继承者的说明:  当从 BindingManagerBase 继承时,必须重写下列成员:AddNewCountCancelCurrentEditCurrentEndCurrentEditGetItemPropertiesOnCurrentChangedPositionRemoveAtResumeBindingSuspendBindingUpdateIsBinding

事例如下
先定义
public BindingManagerBase BindingManagerBaseThis;
private DataSet ds=new DataSet();


FormLoad()里
     ds.Clear();
    // 省冽如何获取数据集合 myds
    ds.Merge(myds,false);
    dataviewThis = new DataView(.Tables[0]);
    BindingManagerBaseThis = BindingContext[dataviewThis];
    this.dataGrid1.DataSource=dataviewThis;

这样一来,你修改的DataGrid的值会同时更新DataSet的值

原文地址:https://www.cnblogs.com/meetweb/p/281468.html