演练:创建支持简单数据绑定的用户控件

更新:2007 年 11 月

在 Windows 应用程序的窗体上显示数据时,您可以从“工具箱”中选择现有的控件,而当标准控件无法提供应用程序所要求的功能时,您还可以创作自定义控件。本演练显示如何创建一个用于实现 DefaultBindingPropertyAttribute 的控件。用于实现 DefaultBindingPropertyAttribute 的控件可以包含一个可以绑定到数据的属性。此类控件类似于 TextBoxCheckBox

有关控件创作的更多信息,请参见 设计时开发 Windows 窗体控件

创作用于数据绑定方案中的控件时,您需要实现以下数据绑定属性之一:

数据绑定属性的用法

在简单控件上实现 DefaultBindingPropertyAttribute,如 TextBox,此类控件用于显示数据的单个列(或属性)。(本演练页面描述了此过程)。

在控件上实现 ComplexBindingPropertiesAttribute,如 DataGridView,此类控件用于显示数据列表(或表)。有关更多信息,请参见 演练:创建支持复杂数据绑定的用户控件

在控件上实现 LookupBindingPropertiesAttribute,如 ComboBox,此类控件用于显示数据列表(或表),也需要显示数据的单个列或属性。有关更多信息,请参见 演练:创建支持查找数据绑定的用户控件

本演练创建了一个简单控件,用于显示表中单个列的数据。此示例使用 Northwind 示例数据库的 Customers 表中的 Phone 列。通过使用 MaskedTextBox 并设置电话号码的掩码,该简单的用户控件可以标准的电话号码格式显示客户的电话号码。

通过此演练,您将学会如何执行以下任务:

  • 创建新的“Windows 应用程序”。

  • 向您的项目添加新的“用户控件”。

  • 以可视方式设计用户控件。

  • 实现 DefaultBindingProperty 属性。

  • 使用 数据源配置向导 创建数据集。

  • 在“数据源”窗口中,设置“电话”列,以使用新的控件。

  • 创建一个窗体,用于在新控件中显示数据。

先决条件

若要完成本演练,您需要:

创建 Windows 应用程序

第一步是创建“Windows 应用程序”。

创建新的 Windows 项目

  1. 在 Visual Studio 中,从“文件”菜单创建一个新的“项目”。

  2. 将项目命名为 SimpleControlWalkthrough。

  3. 选择“Windows 应用程序”,再单击“确定”。有关更多信息,请参见创建基于 Windows 的应用程序

    将创建 SimpleControlWalkthrough 项目,并将其添加到解决方案资源管理器中。

向项目中添加用户控件

本演练通过“用户控件”创建一个简单的可绑定数据控件,从而向 SimpleControlWalkthrough 项目中添加一个“用户控件”项。

向项目中添加用户控件

  1. 从“项目”菜单中选择“添加用户控件”。

  2. 在名称区域键入 PhoneNumberBox,再单击“添加”。

    PhoneNumberBox 控件将添加到解决方案资源管理器中,并在设计器中打开。

设计 PhoneNumberBox 控件

本演练对现有 MaskedTextBox 进行了扩展,以创建 PhoneNumberBox 控件。

设计 PhoneNumberBox 控件

  1. MaskedTextBox 从“工具箱”拖到用户控件的设计图面。

  2. 选择刚刚拖动的 MaskedTextBox 上的智能标记,再选择“设置掩码”。

  3. 在“输入掩码”对话框中选择“电话号码”,再单击“确定”以设置掩码。

添加所需的数据绑定属性

对于支持数据绑定的简单控件,应实现 DefaultBindingPropertyAttribute

实现 DefaultBindingProperty 属性

  1. 将 PhoneNumberBox 控件切换到“代码”视图 (在“视图”菜单上选择“代码”)。

  2. 将 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();
            }
        }
    }
    
  3. 从“生成”菜单中选择“生成解决方案”。

从数据库创建数据源

此步骤根据 Northwind 示例数据库中的 Customers 表,使用“数据源配置向导”创建数据源。必须具有访问 Northwind 示例数据库的权限才能创建连接。有关设置 Northwind 示例数据库的信息,请参见 如何:安装示例数据库

创建数据源

  1. 在“数据”菜单上单击“显示数据源”。

  2. 在“数据源”窗口中,选择“添加新数据源”,启动“数据源配置向导”。

  3. 在“选择数据源类型”页面上选择“数据库”,再单击“下一步”。

  4. 在“选择您的数据连接”页面上进行以下某一操作:

    • 如果下拉列表中包含到 Northwind 示例数据库的数据连接,请选中该连接。

      或者

    • 选择“新建连接”,启动“添加/修改连接”对话框。有关更多信息,请参见“添加/修改连接”对话框(通用)

  5. 如果数据库需要密码,请选择该选项以包括敏感数据,再单击“下一步”。

  6. 在“将连接字符串保存到应用程序配置文件”页面上单击“下一步”。

  7. 在“选择数据库对象”页面上展开“表”节点。

  8. 选择 Customers 表,再单击“完成”。

    “NorthwindDataSet”被添加到您的项目中,并且“数据源”窗口中出现 Customers 表。

将“电话”列设置为使用 PhoneNumberBox 控件

在“数据源”窗口中,您可以先设置要创建的控件,然后再将项拖动到窗体上。

将“电话”列设置为绑定到 PhoneNumberBox 控件

  1. 在设计器中打开“Form1”。

  2. 在“数据源”窗口中展开“Customers”节点。

  3. 在“客户”节点上单击下拉箭头,再从控件列表中选择“详细信息”。

  4. 单击“电话”列上的下拉箭头,再选择“自定义”。

  5. 从“数据 UI 自定义选项”对话框中的“关联的控件”列表中,选择“PhoneNumberBox”。

  6. 单击“电话”列上的下拉箭头,再选择“PhoneNumberBox”。

向窗体添加控件

通过将“数据源”窗口中的项拖动到窗体,您可以创建数据绑定控件。

在窗体上创建数据绑定控件

运行应用程序

运行应用程序

  • 按 F5 运行应用程序。

后续步骤

根据应用程序的要求,在创建了支持数据绑定的控件后,可能还需要执行一些步骤。接下来的一些常见步骤包括:

请参见

任务

如何:设置从“数据源”窗口中拖动时要创建的控件

概念

“显示数据”概述

其他资源

数据访问入门

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在 Windows 应用程序中的窗体上显示数据

在应用程序中编辑数据

验证数据

保存数据