创建支持简单数据绑定的 .NET Framework Windows 窗体用户控件

注释

此类 DataSet 和相关类是 2000 年代初的旧版 .NET Framework 技术,使应用程序能够在应用与数据库断开连接时处理内存中的数据。 这些技术对于使用户能够修改数据并将更改保留回数据库的应用特别有用。 尽管数据集是经过证实的成功技术,但新 .NET 应用程序的建议方法是使用 Entity Framework Core。 Entity Framework 提供了一种更自然的方式来将表格数据用作对象模型,并且具有更简单的编程接口。

在 Windows 应用程序中显示窗体上的数据时,可以从 工具箱中选择现有控件,或者如果你的应用程序需要标准控件中不可用的功能,则可以创作自定义控件。 本演练演示如何创建一个实现DefaultBindingPropertyAttribute的控件。 实现该 DefaultBindingPropertyAttribute 控件的控件可以包含可以绑定到数据的一个属性。 此类控件类似于 TextBoxCheckBox

有关控件创作的详细信息,请参阅 设计时开发 Windows 窗体控件

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

数据绑定属性用法
在简单控件(如TextBox)上实现DefaultBindingPropertyAttribute,此等控件用于显示单列(或属性)数据。 (本演练页介绍了此过程。
在显示数据列表(或表格)的控件(例如DataGridView)上实现ComplexBindingPropertiesAttribute功能。 有关详细信息,请参阅 创建支持复杂数据绑定的 Windows 窗体用户控件
在显示数据列表(或表格)同时还需展示单列或属性的控件上实现LookupBindingPropertiesAttribute(如ComboBox)。 有关详细信息,请参阅 创建支持查找数据绑定的 Windows 窗体用户控件

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

在本演练中,你将了解如何:

  • 创建一个新的 Windows 窗体应用程序(.NET Framework)

  • 向项目添加新 的用户控件

  • 直观地设计用户控件。

  • DefaultBindingProperty属性的实现。

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

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

  • 创建窗体以显示新控件中的数据。

先决条件

若要完成本教程,需要 .NET 桌面开发和数据存储以及处理 Visual Studio 中安装的工作负载。 若要安装它们,请打开 Visual Studio 安装程序,然后选择要修改的 Visual Studio 版本旁边的 修改(或 更多>修改)。 请参阅修改 Visual Studio

本演练使用 SQL Server Express LocalDB 和 Northwind 示例数据库。

  1. 如果没有 SQL Server Express LocalDB,请从 SQL Server Express 下载页或通过 Visual Studio 安装程序安装它。 在 Visual Studio 安装程序中,可以将 SQL Server Express LocalDB 作为 数据存储和处理 工作负荷的一部分或作为单个组件安装。

  2. 按照以下步骤安装 Northwind 示例数据库:

    1. 在 Visual Studio 中,打开 SQL Server 对象资源管理器 窗口。 (SQL Server 对象资源管理器作为数据存储和处理工作负载的一部分安装在 Visual Studio 安装程序中。)展开“SQL Server”节点。 右键单击 LocalDB 实例并选择“新建查询”

      此时会打开查询编辑器窗口。

    2. Northwind Transact-SQL 脚本 复制到剪贴板。 此 T-SQL 脚本从头开始创建 Northwind 数据库,并使用数据填充该数据库。

    3. 将 T-SQL 脚本粘贴到查询编辑器中,然后选择 “执行” 按钮。

      短时间后,查询将完成运行并创建 Northwind 数据库。

创建 Windows 窗体应用程序

第一步是创建 Windows 窗体应用(.NET Framework):

  1. 在 Visual Studio 的“文件”菜单中,依次选择“新建”>“项目”。

  2. 在左侧窗格中展开 Visual C#Visual Basic ,然后选择 Windows 桌面

  3. 在中间窗格中,选择 Windows 窗体应用 项目类型。

  4. 将项目命名 为 SimpleControlWalkthrough,然后选择 “确定”。

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

将用户控件添加到项目

本演练从用户控件创建一个简单的可进行数据绑定的控件。 将 用户控件 项添加到 SimpleControlWalkthrough 项目:

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

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

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

设计 PhoneNumberBox 控件

本演练扩展了现有 MaskedTextBox 控件以创建 PhoneNumberBox 控件:

  1. MaskedTextBox工具箱中拖动到用户控件的设计界面上。

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

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

添加所需的数据绑定属性

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

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

  2. PhoneNumberBox 中的代码替换为以下内容:

    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 控件

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

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

  2. 展开“数据源”窗口中的“客户”节点。

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

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

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

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

向窗体添加控件

将项目从“数据源”窗口拖动到窗体上,可以创建数据绑定控件。

若要在窗体上创建数据绑定控件,请将主 “客户 ”节点从 “数据源 ”窗口拖到窗体上,并验证 PhoneNumberBox 控件是否用于在 Phone 列中显示数据。

带有描述性标签的数据绑定控件显示在窗体上,另有用于导航记录的工具栏(BindingNavigator)。 NorthwindDataSet、CustomersTableAdapter、BindingSourceBindingNavigator显示在组件托盘中。

运行应用程序

F5 运行应用程序。

后续步骤

根据应用程序要求,创建支持数据绑定的控件后,可能需要执行几个步骤。 一些典型的后续步骤包括: