演练:创建支持简单数据绑定的用户控件
更新:2007 年 11 月
在 Windows 应用程序的窗体上显示数据时,您可以从“工具箱”中选择现有的控件,而当标准控件无法提供应用程序所要求的功能时,您还可以创作自定义控件。本演练显示如何创建一个用于实现 DefaultBindingPropertyAttribute 的控件。用于实现 DefaultBindingPropertyAttribute 的控件可以包含一个可以绑定到数据的属性。此类控件类似于 TextBox 或 CheckBox。
有关控件创作的更多信息,请参见 设计时开发 Windows 窗体控件。
创作用于数据绑定方案中的控件时,您需要实现以下数据绑定属性之一:
数据绑定属性的用法 |
---|
在简单控件上实现 DefaultBindingPropertyAttribute,如 TextBox,此类控件用于显示数据的单个列(或属性)。(本演练页面描述了此过程)。 |
在控件上实现 ComplexBindingPropertiesAttribute,如 DataGridView,此类控件用于显示数据列表(或表)。有关更多信息,请参见 演练:创建支持复杂数据绑定的用户控件。 |
在控件上实现 LookupBindingPropertiesAttribute,如 ComboBox,此类控件用于显示数据列表(或表),也需要显示数据的单个列或属性。有关更多信息,请参见 演练:创建支持查找数据绑定的用户控件。 |
本演练创建了一个简单控件,用于显示表中单个列的数据。此示例使用 Northwind 示例数据库的 Customers 表中的 Phone 列。通过使用 MaskedTextBox 并设置电话号码的掩码,该简单的用户控件可以标准的电话号码格式显示客户的电话号码。
通过此演练,您将学会如何执行以下任务:
创建新的“Windows 应用程序”。
向您的项目添加新的“用户控件”。
以可视方式设计用户控件。
实现 DefaultBindingProperty 属性。
使用 数据源配置向导 创建数据集。
在“数据源”窗口中,设置“电话”列,以使用新的控件。
创建一个窗体,用于在新控件中显示数据。
先决条件
若要完成本演练,您需要:
- 能够访问 Northwind 示例数据库。有关更多信息,请参见如何:安装示例数据库。
创建 Windows 应用程序
第一步是创建“Windows 应用程序”。
创建新的 Windows 项目
在 Visual Studio 中,从“文件”菜单创建一个新的“项目”。
将项目命名为 SimpleControlWalkthrough。
选择“Windows 应用程序”,再单击“确定”。有关更多信息,请参见创建基于 Windows 的应用程序。
将创建 SimpleControlWalkthrough 项目,并将其添加到解决方案资源管理器中。
向项目中添加用户控件
本演练通过“用户控件”创建一个简单的可绑定数据控件,从而向 SimpleControlWalkthrough 项目中添加一个“用户控件”项。
向项目中添加用户控件
从“项目”菜单中选择“添加用户控件”。
在名称区域键入 PhoneNumberBox,再单击“添加”。
PhoneNumberBox 控件将添加到解决方案资源管理器中,并在设计器中打开。
设计 PhoneNumberBox 控件
本演练对现有 MaskedTextBox 进行了扩展,以创建 PhoneNumberBox 控件。
设计 PhoneNumberBox 控件
将 MaskedTextBox 从“工具箱”拖到用户控件的设计图面。
选择刚刚拖动的 MaskedTextBox 上的智能标记,再选择“设置掩码”。
在“输入掩码”对话框中选择“电话号码”,再单击“确定”以设置掩码。
添加所需的数据绑定属性
对于支持数据绑定的简单控件,应实现 DefaultBindingPropertyAttribute。
实现 DefaultBindingProperty 属性
将 PhoneNumberBox 控件切换到“代码”视图 (在“视图”菜单上选择“代码”)。
将 PhoneNumberBox 中的代码替换为以下内容:
<System.ComponentModel.DefaultBindingProperty("PhoneNumber")> _ Public Class PhoneNumberBox Public Property PhoneNumber() As String Get Return MaskedTextBox1.Text End Get Set(ByVal value As String) MaskedTextBox1.Text = value End Set End Property End Class
using System.Windows.Forms; namespace CS { [System.ComponentModel.DefaultBindingProperty("PhoneNumber")] public partial class PhoneNumberBox : UserControl { public string PhoneNumber { get{ return maskedTextBox1.Text; } set{ maskedTextBox1.Text = value; } } public PhoneNumberBox() { InitializeComponent(); } } }
从“生成”菜单中选择“生成解决方案”。
从数据库创建数据源
此步骤根据 Northwind 示例数据库中的 Customers 表,使用“数据源配置向导”创建数据源。必须具有访问 Northwind 示例数据库的权限才能创建连接。有关设置 Northwind 示例数据库的信息,请参见 如何:安装示例数据库。
创建数据源
在“数据”菜单上单击“显示数据源”。
在“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”。
在“选择数据源类型”页面上选择“数据库”,再单击“下一步”。
在“选择您的数据连接”页面上进行以下某一操作:
如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选中该连接。
或者
选择“新建连接”,启动“添加/修改连接”对话框。有关更多信息,请参见“添加/修改连接”对话框(通用)。
如果数据库需要密码,请选择该选项以包括敏感数据,再单击“下一步”。
在“将连接字符串保存到应用程序配置文件”页面上单击“下一步”。
在“选择数据库对象”页面上展开“表”节点。
选择 Customers 表,再单击“完成”。
“NorthwindDataSet”被添加到您的项目中,并且“数据源”窗口中出现 Customers 表。
将“电话”列设置为使用 PhoneNumberBox 控件
在“数据源”窗口中,您可以先设置要创建的控件,然后再将项拖动到窗体上。
将“电话”列设置为绑定到 PhoneNumberBox 控件
在设计器中打开“Form1”。
在“数据源”窗口中展开“Customers”节点。
在“客户”节点上单击下拉箭头,再从控件列表中选择“详细信息”。
单击“电话”列上的下拉箭头,再选择“自定义”。
从“数据 UI 自定义选项”对话框中的“关联的控件”列表中,选择“PhoneNumberBox”。
单击“电话”列上的下拉箭头,再选择“PhoneNumberBox”。
向窗体添加控件
通过将“数据源”窗口中的项拖动到窗体,您可以创建数据绑定控件。
在窗体上创建数据绑定控件
将主“客户”节点从“数据源”窗口拖动到窗体上,并验证 PhoneNumberBox 控件是否被用于显示 Phone 列中的数据。
带有描述性标签的数据绑定控件会出现在窗体上,同时还显示一个工具条 (BindingNavigator),用于在记录间进行导航。组件栏中出现 NorthwindDataSet、CustomersTableAdapter、BindingSource 和 BindingNavigator。
运行应用程序
运行应用程序
- 按 F5 运行应用程序。
后续步骤
根据应用程序的要求,在创建了支持数据绑定的控件后,可能还需要执行一些步骤。接下来的一些常见步骤包括:
将您的自定义控件置于控件库中,以便在其他应用程序中重用它们。有关更多信息,请参见 Windows 控件库模板。
创建支持更复杂的数据绑定方案的控件。有关更多信息,请参见 演练:创建支持复杂数据绑定的用户控件 和 演练:创建支持查找数据绑定的用户控件。