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 的任何视图设置默认筛选器和排序选项。

另请参阅