BindingManagerBase 类

BindingManagerBase 类

.NET Framework 2.0

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

命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)

 
VB
'声明

Public MustInherit Class BindingManagerBase
'用法

Dim instance As BindingManagerBase

复制
public abstract class BindingManagerBase

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

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

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

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

解决方案程序员最好将控件直接绑定到 BindingSource 组件,这个组件同时作为数据源和实际目标数据源的数据连接器。BindingSource 极大地简化了简单数据绑定和复杂数据绑定,包括管理控件与其目标之间的流量。

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

 

BindingContext 类

.NET Framework 2.0

管理从 Control 类继承的任意对象的 BindingManagerBase 对象集合。

命名空间:System.Windows.Forms
程序集:System.Windows.Forms(在 system.windows.forms.dll 中)

VB
'声明

Public Class BindingContext
	Implements ICollection, IEnumerable
'用法

Dim instance As BindingContext
public class BindingContext implements ICollection, IEnumerable

每个 Windows 窗体至少有一个 BindingContext 对象,此对象管理该窗体的 BindingManagerBase 对象。由于 BindingManagerBase 类是抽象类,因此 Item 属性的返回类型是 CurrencyManagerPropertyManager。如果数据源是只能返回单个属性(而不是对象列表)的对象,则 TypePropertyManager。例如,如果指定 TextBox 作为数据源,则返回 PropertyManager。另一方面,如果数据源是实现 IListIBindingList 的对象,则返回 CurrencyManager

对于 Windows 窗体上的每个数据源,都有单个 CurrencyManagerPropertyManager。由于可能有多个数据源与 Windows 窗体关联,使用 BindingContext 可以检索与数据源关联的任何特定的 CurrencyManager

Note注意

当使用 Item 属性时,BindingContext 将创建一个新的 BindingManagerBase(如果尚不存在)。这可能会引起混淆,因为返回的对象可能并未管理所需的列表(或任何列表)。若要防止返回无效的 BindingManagerBase,请使用 Contains 方法确定所需的 BindingManagerBase 是否已存在。

如果使用容器控件(如 GroupBoxPanelTabControl)来包含数据绑定控件,则可以仅为该容器控件及其控件创建一个 BindingContext。然后,窗体的每一部分都可以由它自己的 BindingManagerBase 来管理。有关为同一数据源创建多个 BindingManagerBase 对象的更多信息,请参见 BindingContext 构造函数。

如果将 TextBox 控件添加到某个窗体并将其绑定到数据集中的表列,则该控件与此窗体的 BindingContext 进行通信。BindingContext 反过来与此数据关联的特定 CurrencyManager 进行通信。如果您查询了 CurrencyManagerPosition 属性,它会报告此 TextBox 控件的当前绑定记录。在下面的代码示例中,通过 TextBox 控件所在的窗体的 BindingContext,将此控件绑定到 dataSet1 数据集中 Customers 表的 FirstName 列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值