Windows 窗体支持的数据源

传统上,数据绑定已在应用程序中使用,以利用存储在数据库中的数据。 使用 Windows 窗体数据绑定,只要满足某些最低要求,就可以访问数据库中的数据以及其他结构中的数据,例如数组和集合。

要绑定到的结构

在 Windows 窗体中,你可以绑定到各种结构,从简单对象(简单绑定)到复杂列表,例如 ADO.NET 数据表(复杂绑定)。 对于简单绑定,Windows 窗体支持绑定到简单对象的公共属性。 基于列表的 Windows 窗体绑定通常要求对象支持 IList 接口或 IListSource 接口。 此外,如果要通过 BindingSource 组件进行绑定,则可以绑定到支持 IEnumerable 接口的对象。 有关与数据绑定相关的接口的详细信息,请参阅 与数据绑定相关的接口

以下列表显示了可以在 Windows 窗体中绑定到的结构。

BindingSource
BindingSource 是最常见的 Windows 窗体数据源,在数据源和 Windows 窗体控件之间执行代理。 一般 BindingSource 使用模式是将控件绑定到 BindingSource 并将 BindingSource 绑定到数据源(例如 ADO.NET 数据表或业务对象)。 BindingSource 提供了增强和改进数据绑定支持水平的服务。 例如,Windows 窗体基于列表的控件(例如 DataGridViewComboBox)不直接支持绑定到 IEnumerable 数据源,但是,可以通过 BindingSource 绑定来启用此方案。 在这种情况下,BindingSource 会将数据源转换为 IList

简单对象
Windows 窗体支持数据绑定控件属性到使用 Binding 类型的对象实例上的公共属性。 Windows 窗体还支持基于列表的控件绑定,例如在使用 BindingSource 时将 ListControl 绑定到对象实例。

数组或集合
若要充当数据源,列表必须实现 IList 接口;一个示例是 Array 类的实例的数组。 有关数组的详细信息,请参阅 如何:创建对象数组(Visual Basic)

通常,在为数据绑定创建对象列表时,应使用 BindingList<T>BindingList<T>IBindingList 接口的通用版本。 IBindingList 接口通过添加双向数据绑定所需的属性、方法和事件来扩展 IList 接口。

IEnumerable
Windows 窗体控件可以绑定到仅支持 IEnumerable 接口的数据源,前提是它们通过 BindingSource 组件绑定。

ADO.NET 数据对象
ADO.NET 提供了许多适合进行绑定的数据结构。 每一种都因其精密性和复杂性而异。

  • DataColumnDataColumnDataTable 的基本构建基块,其中许多列构成一个表。 每个 DataColumn 都有一个 DataType 属性,用于确定该列包含的数据类型(例如,描述汽车的表中的汽车品牌)。 可以将控件(如 TextBox 控件的 Text 属性)简单绑定到数据表中的列。

  • DataTableDataTable 是表(行和列)在 ADO.NET 中的表示形式。 数据表包含两个集合:DataColumn,表示给定表中数据的列(最终确定可输入到该表中的数据种类),以及表示给定表中数据的行 DataRow。 可以将控件复杂绑定到数据表中包含的信息(例如将 DataGridView 控件绑定到数据表)。 但是,绑定到 DataTable 时,实际上是绑定到表的默认视图。

  • DataViewDataView 是一个可以筛选或排序的单一数据表的自定义视图。 数据视图是复杂绑定控件使用的数据“快照”。 可以简单绑定或复杂绑定到数据视图中的数据,但请注意,要绑定到的是数据的固定“图片”,而不是干净、更新中的数据源。

  • DataSetDataSet 是数据库中数据的表、关系和约束的集合。 可以简单绑定或复杂绑定到数据集中的数据,但请注意,要绑定到 DataSet 的默认 DataViewManager(请参阅下一个要点)。

  • DataViewManagerDataViewManager 是整个 DataSet的自定义视图,类似于 DataView,但包含关系。 使用 DataViewSettings 集合,可以为给定表 DataViewManager 具有的任何视图设置默认筛选器和排序选项。

另请参阅