http://msdn.microsoft.com/zh-cn/library/system.windows.forms.bindingcontext(VS.80).aspx
个 Windows 窗体至少有一个 BindingContext 对象,此对象管理该窗体的 BindingManagerBase 对象。由于 BindingManagerBase 类是抽象类,因此 Item 属性的返回类型是 CurrencyManager 或 PropertyManager。如果数据源是只能返回单个属性(而不是对象列表)的对象,则 Type 为 PropertyManager。例如,如果指定 TextBox 作为数据源,则返回 PropertyManager。另一方面,如果数据源是实现 IList 或 IBindingList 的对象,则返回 CurrencyManager。
对于 Windows 窗体上的每个数据源,都有单个 CurrencyManager 或 PropertyManager。由于可能有多个数据源与 Windows 窗体关联,使用 BindingContext 可以检索与数据源关联的任何特定的 CurrencyManager。
注意 |
---|
当使用 Item 属性时,BindingContext 将创建一个新的 BindingManagerBase(如果尚不存在)。这可能会引起混淆,因为返回的对象可能并未管理所需的列表(或任何列表)。若要防止返回无效的 BindingManagerBase,请使用 Contains 方法确定所需的 BindingManagerBase 是否已存在。 |
如果使用容器控件(如 GroupBox、Panel 或 TabControl)来包含数据绑定控件,则可以仅为该容器控件及其控件创建一个 BindingContext。然后,窗体的每一部分都可以由它自己的 BindingManagerBase 来管理。有关为同一数据源创建多个 BindingManagerBase 对象的更多信息,请参见 BindingContext 构造函数。
如果将 TextBox 控件添加到某个窗体并将其绑定到数据集中的表列,则该控件与此窗体的 BindingContext 进行通信。BindingContext 反过来与此数据关联的特定 CurrencyManager 进行通信。如果您查询了 CurrencyManager 的 Position 属性,它会报告此 TextBox 控件的当前绑定记录。在下面的代码示例中,通过 TextBox 控件所在的窗体的 BindingContext,将此控件绑定到 dataSet1 数据集中 Customers 表的 FirstName 列。