演练:创建支持查找数据绑定的 Windows 窗体用户控件
在 Windows 窗体上显示数据时,您可以从“工具箱”中选择现有的控件,或者,如果应用程序需要标准控件中无法实现的功能时,您还可以创作自定义控件。 此演练显示如何创建实现 LookupBindingPropertiesAttribute 的控件。 实现 LookupBindingPropertiesAttribute 的控件可以包含三个属性,这些属性可以绑定到数据。 此类控件类似于 ComboBox。
有关控件创作的更多信息,请参见 设计时开发 Windows 窗体控件。
创建用于数据绑定方案的控件时,您需要实现以下数据绑定特性之一:
数据绑定特性的用法 |
---|
在简单控件上实现 DefaultBindingPropertyAttribute,如 TextBox,此类控件用于显示数据的单个列(或属性)。 有关更多信息,请参见 演练:创建支持简单数据绑定的 Windows 窗体用户控件。 |
在控件上实现 ComplexBindingPropertiesAttribute,如 DataGridView,此类控件用于显示数据列表(或表)。 有关更多信息,请参见 演练:创建支持复杂数据绑定的 Windows 窗体用户控件。 |
在控件上实现 LookupBindingPropertiesAttribute,如 ComboBox,该控件用于显示数据列表(或表),也需要显示数据的单个列或属性 (本演练页面描述了此过程)。 |
此演练创建绑定到源自两个表的数据的查找控件。 此示例使用源自 Northwind 示例数据库的 Customers 和 Orders 表。 该查找控件将被绑定到源自 Orders 表的 CustomerID 字段。 它将使用此值从 Customers 表中查找 CompanyName。
通过本演练,您将学会如何执行以下任务:
创建新的**“Windows 应用程序”**。
向您的项目添加新的**“用户控件”**。
以可视方式设计用户控件。
实现 LookupBindingProperty 特性。
使用 数据源配置向导 创建数据集。
在**“数据源”窗口中,设置“Orders”表中的“CustomerID”**列,以使用新的控件。
创建一个窗体,用于在新控件中显示数据。
系统必备
若要完成本演练,您需要:
- 对 Northwind 示例数据库的访问权。 有关更多信息,请参见 如何:安装示例数据库。
创建 Windows 应用程序
第一步是创建**“Windows 应用程序”**。
创建新的 Windows 项目
在 Visual Studio 中,从**“文件”菜单创建一个新的“项目”**。
将项目命名为 LookupControlWalkthrough。
选择**“Windows 应用程序”,然后单击“确定”**。 有关更多信息,请参见 开发客户端应用程序。
创建 LookupControlWalkthrough 项目并将其添加到**“解决方案资源管理器”**中。
向项目中添加用户控件
由于此演练是从**“用户控件”创建查找控件,所以您必须在“LookupControlWalkthrough”项目中添加“用户控件”**项。
向项目中添加用户控件
从**“项目”菜单中选择“添加用户控件”**。
在**“名称”区域中键入 LookupBox,再单击“添加”**。
**“LookupBox”控件即被添加到“解决方案资源管理器”**中并在设计器中打开。
设计 LookupBox 控件
设计 LookupBox 控件
- 将 ComboBox 从**“工具箱”**拖到用户控件的设计图面。
添加所需的数据绑定特性
对于支持数据绑定的查找控件,您可以实现 LookupBindingPropertiesAttribute。
实现 LookupBindingProperties 特性
将**“LookupBox”控件切换到“代码”视图 (在“视图”菜单上选择“代码”**)。
将 LookupBox 中的代码替换为下面的内容:
<System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")> Public Class LookupBox Public Property DataSource() As Object Get Return ComboBox1.DataSource End Get Set(ByVal value As Object) ComboBox1.DataSource = value End Set End Property Public Property DisplayMember() As String Get Return ComboBox1.DisplayMember End Get Set(ByVal value As String) ComboBox1.DisplayMember = value End Set End Property Public Property ValueMember() As String Get Return ComboBox1.ValueMember End Get Set(ByVal value As String) ComboBox1.ValueMember = value End Set End Property Public Property LookupMember() As String Get Return ComboBox1.SelectedValue.ToString() End Get Set(ByVal value As String) ComboBox1.SelectedValue = value End Set End Property End Class
using System.Windows.Forms; namespace CS { [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")] public partial class LookupBox : UserControl { public object DataSource { get{ return comboBox1.DataSource; } set{ comboBox1.DataSource = value; } } public string DisplayMember { get{ return comboBox1.DisplayMember; } set{ comboBox1.DisplayMember = value; } } public string ValueMember { get{ return comboBox1.ValueMember; } set{ comboBox1.ValueMember = value; } } public string LookupMember { get{ return comboBox1.SelectedValue.ToString(); } set{ comboBox1.SelectedValue = value; } } public LookupBox() { InitializeComponent(); } } }
从**“生成”菜单中选择“生成解决方案”**。
从数据库创建数据源
此步骤根据 Northwind 示例数据库中的 Customers 和 Orders 表,使用**“数据源配置向导”**创建数据源。 必须具有访问 Northwind 示例数据库的权限才能创建连接。 有关设置 Northwind 示例数据库的信息,请参见 如何:安装示例数据库。
创建数据源
在**“数据”菜单上,单击“显示数据源”**。
在**“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”**。
在**“选择数据源类型”页上选择“数据库”,然后单击“下一步”**。
在**“选择您的数据连接”**页面上执行下列操作之一:
如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选择该连接。
- 或 -
选择**“新建连接”,启动“添加/修改连接”**对话框。 有关更多信息,请参见“添加/修改连接”对话框(通用)。
如果数据库需要密码,请选择该选项以包括敏感数据,再单击**“下一步”**。
在**“将连接字符串保存到应用程序配置文件”页面上单击“下一步”**。
在**“选择数据库对象”页面上展开“表”**节点。
选择 Customers 和 Orders 表,再单击**“完成”**。
**“NorthwindDataSet”被添加到您的项目中,并且“数据源”**窗口中出现 Customers 和 Orders 表。
设置“Orders”表的“CustomerID”列以使用 LookupBox 控件
在**“数据源”**窗口中,您可以先设置要创建的控件,然后再将项拖动到窗体上。
设置“CustomerID”列,将其绑定到 LookupBox 控件
在设计器中打开**“Form1”**。
在**“数据源”窗口中展开“Customers”**节点。
展开**“Orders”节点(“Customers”节点中“Fax”**列下面的节点)。
单击**“Orders”节点上的下拉箭头并从控件列表中选择“Details”**。
单击**“CustomerID”列(在“Orders”节点中)上的下拉箭头并选择“自定义”**。
在**“数据 UI 自定义选项”对话框中,从“关联的控件”列表中选择“LookupBox”**。
单击**“确定”**。
单击**“CustomerID”列上的下拉箭头并选择“LookupBox”**。
向窗体添加控件
可以通过将某些项从**“数据源”窗口中拖到“Form1”**上,来创建数据绑定控件。
在 Windows 窗体上创建数据绑定控件
- 将**“Orders”节点从“数据源”窗口中拖到 Windows 窗体上,并验证是否使用“LookupBox”**控件显示 CustomerID 中的数据。
绑定该控件以从“Customers”表中查找 CompanyName
设置查找绑定
在**“数据源”窗口中选择主“Customers”节点,并将其拖到“Form1”上的“CustomerIDLookupBox”**中的组合框中。
此操作对数据绑定进行设置,在保持源自 Orders 表的 CustomerID 值时,显示 Customers 表中的 CompanyName。 有关更多信息,请参见 如何:在 Windows 窗体应用程序中创建查找表。
运行应用程序
运行应用程序
按 F5 运行该应用程序。
通过某些记录进行定位,并验证 LookupBox 控件中是否出现 CompanyName。
请参见
任务
概念
Visual Studio 2012 中针对数据应用程序开发的新增功能
在 Visual Studio 中将 Windows 窗体控件绑定到数据