演练:将数据绑定到 Excel 操作窗格上的控件

本演练演示了Microsoft Office Excel 中作窗格上的控件的数据绑定。 这些控件演示 SQL Server 数据库中表之间的主/详细信息关系。

适用于: 本主题中的信息适用于 Excel 的文档级项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能

本演练阐释了以下任务:

  • 向工作表添加控件。

  • 创建操作窗格控件。

  • 向操作窗格控件添加数据绑定的 Windows 窗体控件。

  • 在应用程序打开时显示动作窗格。

注释

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅个性化设置 Visual Studio IDE

先决条件

你需要满足以下条件才能完成本演练:

  • 包含 Microsoft Office 开发人员工具的 Visual Studio 版本。 有关详细信息,请参阅 配置计算机以开发 Office 解决方案

  • Excel 2013 或 Excel 2010 。

  • 使用 Northwind SQL Server 示例数据库访问服务器。

  • 读取和写入 SQL Server 数据库的权限。

创建项目

第一步是创建 Excel 工作簿项目。

创建新项目

  1. 创建一个名为 “我的 Excel 操作窗格” 的 Excel 工作簿项目。 在向导中,选择“ 创建新文档”。 有关详细信息,请参阅 如何:在 Visual Studio 中创建 Office 项目

    Visual Studio 将在设计器中打开新的 Excel 工作簿,并将 我的 Excel 操作窗格 项目添加到 解决方案资源管理器

向项目添加新数据源

向项目添加新数据源

  1. 如果 “数据源” 窗口不可见,请通过菜单栏选择“ 查看>其他 Windows>数据源”来显示它。

  2. 选择 “添加新数据源 ”以启动 数据源配置向导

  3. 选择 “数据库 ”,然后单击“ 下一步”。

  4. 选择与 Northwind 示例 SQL Server 数据库的数据连接,或使用 “新建连接 ”按钮添加新连接。

  5. 单击 “下一步”

  6. 清除此选项以保存连接(如果已选中),然后单击“ 下一步”。

  7. 展开“数据库对象”窗口中的“表”节点。

  8. 选中 “供应商 ”表旁边的复选框。

  9. 展开 “产品 ”表,然后选择 ProductNameSupplierIDQuantityPerUnitUnitPrice

  10. 单击“完成”。

    向导将 “供应商 ”表和 “产品 ”表添加到 “数据源 ”窗口。 它还将一个类型化数据集添加到项目中,该数据集会在解决方案资源管理器中显示。

向工作表添加控件

接下来,将 NamedRange 控件和 ListObject 控件添加到第一个工作表。

添加 NamedRange 控件和 ListObject 控件

  1. 验证 My Excel Actions Pane.xlsx 工作簿是否在 Visual Studio 设计器中打开,并显示Sheet1

  2. “数据源 ”窗口中,展开 “供应商 ”表。

  3. 单击 公司名称 节点上的下拉箭头,然后单击 NamedRange

  4. 公司名称“数据源 ”窗口拖到 单元格 A2Sheet1

    创建名为NamedRangeCompanyNameNamedRange控件,文本 <CompanyName> 将显示在单元格 A2 中。 同时,一个BindingSource、一个名为suppliersBindingSource的表适配器和一个DataSet被添加到项目中。 该控件绑定到 BindingSource,而 BindingSource 又绑定到 DataSet 实例。

  5. “数据源”窗口中,向下滚动超过在“供应商”表下的列。 列表底部是 “产品” 表;这里之所以如此,是因为它是 “供应商” 表的子表。 选择此 “产品 ”表,而不是与 “供应商 ”表位于同一级别的表,然后单击显示的下拉箭头。

  6. 单击下拉列表中的 ListObject ,然后将 Products 表拖动到 单元格 A6Sheet1

    ListObject命名ProductNameListObject的控件在单元格 A6 中创建。 同时,将一个名为productsBindingSourceBindingSource和一个表适配器添加到项目中。 该控件绑定到 BindingSource,而 BindingSource 又绑定到 DataSet 实例。

  7. 仅适用于 C#,请在组件托盘中选择suppliersBindingSource,并在属性窗口中将Modifiers属性更改为Internal

将控件添加到操作窗格

接下来,你需要一个包含组合框的操作窗格控件。

添加任务窗格控件

  1. 解决方案资源管理器中选择“我的 Excel 操作窗格”项目。

  2. “项目 ”菜单上,单击“ 添加新项”。

  3. 在“ 添加新项 ”对话框中,选择 “作窗格控件”,将其命名为 ActionsControl,然后单击“ 添加”。

将数据绑定的 Windows 窗体控件添加到操作窗格控件中

  1. “工具箱”“常见控件”选项卡中,将ComboBox控件拖动到操作窗格控件。

  2. Size 属性更改为 171、21

  3. 调整用户控件的大小以适应组合框。

将操作窗格上的控件绑定到数据

在本部分中,你将将数据源 ComboBox 设置为与工作表上的控件相同的数据源 NamedRange

设置控件的数据绑定属性

  1. 右键单击操作窗格控件,然后单击 查看代码

  2. 将以下代码添加到操作窗格控件的Load事件中。

    private void ActionsControl_Load(object sender, EventArgs e)
    {
        this.comboBox1.DataSource = Globals.Sheet1.suppliersBindingSource;
        this.comboBox1.DisplayMember = "CompanyName";
    }
    
  3. 在 C# 中,必须为 ActionsControl 创建事件处理程序。 可以将此代码放置在构造函数中 ActionsControl 。 有关创建事件处理程序的详细信息,请参阅 如何:在 Office 项目中创建事件处理程序

    public ActionsControl()
    {
        InitializeComponent();
        this.Load += new EventHandler(ActionsControl_Load);
    }
    

显示操作窗格

在运行时添加控件之前,操作窗格不可见。

显示操作窗格

  1. 解决方案资源管理器中,右键单击 ThisWorkbook.vbThisWorkbook.cs,然后单击“ 查看代码”。

  2. 在类中创建 ThisWorkbook 用户控件的新实例。

    ActionsControl actions = new ActionsControl();
    
  3. ThisWorkbookStartup事件处理程序中,将控件添加到操作窗格。

    private void ThisWorkbook_Startup(object sender, System.EventArgs e)
    {
        this.ActionsPane.Controls.Add(actions);
    }
    

测试应用程序

现在可以测试文档,验证在打开文档时,操作窗格是否打开,以及控件是否具有主/从关系。

要测试您的文档

  1. F5 运行项目。

  2. 确认操作窗格是否可见。

  3. 在列表框中选择公司。 验证控件中 NamedRange 是否列出了公司名称,以及控件中 ListObject 是否列出了产品详细信息。

  4. 选择不同公司以验证公司名称和产品详细信息的更改是否适当。

后续步骤

下面是一些可能接下来执行的任务: