演练:创建支持复杂数据绑定的 Windows 窗体用户控件

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

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

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

数据绑定特性的用法

在简单控件上实现 DefaultBindingPropertyAttribute,如 TextBox,此类控件用于显示数据的单个列(或属性)。 有关更多信息,请参见 演练:创建支持简单数据绑定的 Windows 窗体用户控件

在控件上实现 ComplexBindingPropertiesAttribute,如 DataGridView,此类控件用于显示数据列表(或表)。 (本演练页面描述了此过程)。

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

本演练创建显示表中多行数据的复杂控件。 本示例使用源自 Northwind 示例数据库的 Customers 表。 复杂用户控件将会在自定义控件中的 DataGridView 中显示 Customers 表。

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

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

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

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

  • 实现 ComplexBindingProperty 特性。

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

  • “数据源”窗口 中设置**“Customers”**表,以使用新的复杂控件。

  • 通过将新控件从**“数据源窗口”拖到“Form1”**添加新控件。

系统必备

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

创建 Windows 应用程序

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

创建新的 Windows 项目

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

  2. 将项目命名为 ComplexControlWalkthrough。

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

    则创建了 ComplexControlWalkthrough 项目并将其添加到**“解决方案资源管理器”**中。

向项目中添加用户控件

由于此演练是从**“用户控件”创建复杂的可绑定数据控件,所以您必须向项目中添加“用户控件”**项。

向项目中添加用户控件

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

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

    ComplexDataGridView 控件即被添加到**“解决方案资源管理器”**中,并在设计器中打开。

设计 ComplexDataGridView 控件

此步骤将 DataGridView 添加到该用户控件。

设计 ComplexDataGridView 控件

  • DataGridView 从**“工具箱”**拖到该用户控件的设计图面上。

添加所需的数据绑定特性

对于支持数据绑定的复杂控件,您可以实现 ComplexBindingPropertiesAttribute

实现 ComplexBindingProperties 特性

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

  2. 将 ComplexDataGridView 中的代码替换为下面的内容:

    <System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")>
    Public Class ComplexDataGridView
    
        Public Property DataSource() As Object
            Get
                Return DataGridView1.DataSource
            End Get
            Set(ByVal value As Object)
                DataGridView1.DataSource = value
            End Set
        End Property
    
        Public Property DataMember() As String
            Get
                Return DataGridView1.DataMember
            End Get
            Set(ByVal value As String)
                DataGridView1.DataMember = value
            End Set
        End Property
    End Class
    
    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
        public partial class ComplexDataGridView : UserControl
        {
            public object DataSource
            {
                get{ return dataGridView1.DataSource; }
                set{ dataGridView1.DataSource = value; }
            }
    
            public string DataMember
            {
                get{ return dataGridView1.DataMember; }
                set{ dataGridView1.DataMember = value; }
            }
    
            public ComplexDataGridView()
            {
                InitializeComponent();
            }
        }
    }
    
  3. 从**“生成”菜单中选择“生成解决方案”**。

从数据库创建数据源

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

创建数据源

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

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

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

  4. 在**“选择您的数据连接”**页面上执行下列操作之一:

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

      - 或 -

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

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

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

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

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

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

设置 Customers 表以使用 ComplexDataGridView 控件

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

设置 Customers 表以绑定到 ComplexDataGridView 控件

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

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

  3. 单击**“Customers”节点上的下拉箭头并选择“自定义”**。

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

  5. 单击 Customers 表上的下拉箭头并从控件列表中选择**“ComplexDataGridView”**。

向窗体添加控件

可以通过将某些项从**“数据源”**窗口拖到您的窗体上来创建数据绑定控件。

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

  • 将主**“Customers”节点从“数据源”窗口中拖到窗体上,并验证是否使用“ComplexDataGridView”**控件显示表中的数据。

运行应用程序

运行应用程序

  • 按 F5 运行应用程序。

后续步骤

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

请参见

任务

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

概念

在 Visual Studio 中将 Windows 窗体控件绑定到数据

在 Visual Studio 中将控件绑定到数据

其他资源

Windows 窗体控件

连接到 Visual Studio 中的数据

准备应用程序以接收数据

将数据获取到应用程序

在应用程序中编辑数据

验证数据

保存数据