可以将数据绑定到 VSTO 外接程序项目中的主机控件和 Windows 窗体控件。 本演练演示如何将控件添加到 Microsoft Office Word 文档,以及如何在运行时将控件绑定到数据。
适用于: 本主题中的信息适用于 Word 的 VSTO 外接程序项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
本演练阐释了以下任务:
- 在运行时向文档添加一个 ContentControl 。 
- 创建将控件连接到数据集实例的控件 BindingSource 。 
- 允许用户滚动浏览记录并在控件中查看它们。 
注释
以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 这些元素取决于你所使用的 Visual Studio 版本和你所使用的设置。 有关详细信息,请参阅 个性化设置 IDE。
先决条件
你需要满足以下条件才能完成本演练:
- 包含 Microsoft Office 开发人员工具的 Visual Studio 版本。 有关详细信息,请参阅 配置计算机以开发 Office 解决方案。 
- Word 2013 或 Word 2010。 
- 访问 SQL Server 2005 或 SQL Server 2005 Express 正在运行的实例,该实例具有 - AdventureWorksLT附加到该实例的示例数据库。 可以从- AdventureWorksLT下载数据库。 有关附加数据库的详细信息,请参阅以下主题:- 若要使用 SQL Server Management Studio 或 SQL Server Management Studio Express 附加数据库,请参阅如何:附加数据库(SQL Server Management Studio)。 
- 若要使用命令行附加数据库,请参阅 “如何:将数据库文件附加到 SQL Server Express”。 
 
创建新项目
第一步是创建 Word VSTO 外接程序项目。
创建新项目
- 使用 Visual Basic 或 C# 创建名称 为“从数据库填充文档”的 Word VSTO 外接程序项目。 - 有关详细信息,请参阅 如何:在 Visual Studio 中创建 Office 项目。 - Visual Studio 将打开 ThisAddIn.vb 或 ThisAddIn.cs 文件,并将 “填充文档”从数据库 项目添加到 解决方案资源管理器。 
- 如果项目面向 .NET Framework 4 或 .NET Framework 4.5,请添加对 Microsoft.Office.Tools.Word.v4.0.Utilities.dll 程序集的引用。 本演练稍后需要引用此项以程序化地将 Windows 窗体控件添加到文档中。 
创建数据源
使用 “数据源 ”窗口向项目添加类型化数据集。
向项目添加类型化数据集
- 如果 “数据源” 窗口不可见,请通过菜单栏选择“ 查看>其他 Windows>数据源”来显示它。 
- 选择 “添加新数据源 ”以启动 数据源配置向导。 
- 单击 “数据库”,然后单击“ 下一步”。 
- 如果已与 - AdventureWorksLT数据库建立现有连接,请选择此连接,然后单击“ 下一步”。- 否则,请单击“ 新建连接”,并使用“ 添加连接 ”对话框创建新连接。 有关详细信息,请参阅 “添加新连接”。 
- 在 “将连接字符串保存到应用程序配置文件 ”页中,单击“ 下一步”。 
- 在“选择数据库对象”页中,展开“表”并选择“客户”(SalesLT)。 
- 单击“完成”。 - AdventureWorksLTDataSet.xsd 文件将添加到解决方案资源管理器。 此文件定义以下项: - 一个名为 - AdventureWorksLTDataSet的数据集。 此数据集表示 AdventureWorksLT 数据库中 Customer (SalesLT) 表的内容。
- 名为 - CustomerTableAdapter的 TableAdapter。 此 TableAdapter 可用于在- AdventureWorksLTDataSet中读取和写入数据。 有关详细信息,请参阅 TableAdapter 概述。- 在本教程的后续步骤中,你将使用这两个对象。 
 
创建控件并将控件绑定到数据
本演练中用于查看数据库记录的界面是基本的,它直接在文档中创建。 一 ContentControl 个控件一次显示一条数据库记录,两 Button 个控件使你能够来回滚动浏览记录。 内容控件使用 BindingSource 连接到数据库。
有关将控件绑定到数据的详细信息,请参阅 在 Office 解决方案中将数据绑定到控件。
在文档中创建界面
- 在 - ThisAddIn类中,声明以下控件以显示并滚动浏览数据库- AdventureWorksLTDataSet的表- Customer。- private AdventureWorksLTDataSet adventureWorksDataSet; private AdventureWorksLTDataSetTableAdapters.CustomerTableAdapter customerTableAdapter; private System.Windows.Forms.BindingSource customerBindingSource; private Microsoft.Office.Tools.Word.RichTextContentControl customerContentControl; private Microsoft.Office.Tools.Word.Controls.Button button1; private Microsoft.Office.Tools.Word.Controls.Button button2;
- 在 - ThisAddIn_Startup方法中,添加以下代码来初始化数据集,使用数据库中的信息- AdventureWorksLTDataSet填充数据集。
- 将以下代码添加到 - ThisAddIn_Startup方法中。 这会生成扩展文档的宿主项。 有关详细信息,请参阅 运行时在 VSTO 外接程序中扩展 Word 文档和 Excel 工作簿。
- 在文档开头定义多个范围。 这些范围标识插入文本和放置控件的位置。 - extendedDocument.Paragraphs[1].Range.InsertParagraphBefore(); extendedDocument.Paragraphs[1].Range.InsertParagraphBefore(); extendedDocument.Paragraphs[1].Range.Text = "The companies listed in the AdventureWorksLT database: \n"; extendedDocument.Paragraphs[2].Range.Text = " "; Word.Range range1 = extendedDocument.Paragraphs[2].Range.Characters.First; Word.Range range2 = extendedDocument.Paragraphs[2].Range.Characters.Last; Word.Range range3 = extendedDocument.Paragraphs[1].Range.Characters.Last;
- 将接口控件添加到以前定义的范围。 - this.button1 = extendedDocument.Controls.AddButton(range1, 60, 15, "1"); this.button1.Text = "Previous"; this.button2 = extendedDocument.Controls.AddButton(range2, 60, 15, "2"); this.button2.Text = "Next"; this.customerContentControl = extendedDocument.Controls.AddRichTextContentControl( range3, "richTextContentControl1");
- 使用BindingSource将内容控件绑定到 - AdventureWorksLTDataSet。 对于 C# 开发人员,为 Button 控件添加两个事件处理程序。- this.customerBindingSource.DataSource = this.adventureWorksDataSet.Customer; this.customerContentControl.DataBindings.Add("Text", this.customerBindingSource, "CompanyName", true, this.customerContentControl.DataBindings.DefaultDataSourceUpdateMode); this.button1.Click += new EventHandler(button1_Click); this.button2.Click += new EventHandler(button2_Click);
- 添加以下代码以在数据库记录中导航。 
测试外接程序
打开 Word 时,内容控件会显示数据集中的数据 AdventureWorksLTDataSet 。 单击“ 下一步 ”和 “上 一步”按钮,滚动浏览数据库记录。
测试 VSTO 外接程序
- 按 F5。 - 命名 - customerContentControl的内容控件是使用数据创建的并填充的。 同时,将一个名为- adventureWorksLTDataSet的数据集对象和一个名为- customerBindingSource的 BindingSource 添加到项目中。 ContentControl绑定到BindingSource,而BindingSource又绑定到数据集对象。
- 单击“ 下一步 ”和 “上 一步”按钮滚动浏览数据库记录。 
相关内容
- Office 解决方案中的数据
- 将数据绑定到 Office 解决方案中的控件
- 如何:使用数据库中的数据填充工作表
- 如何:使用数据库中的数据填充文档
- 如何:使用服务中的数据填充文档
- 如何:使用对象中的数据填充文档
- 如何:在工作表中滚动浏览数据库记录
- 如何:使用主机控件中的数据更新数据源
- 演练:文档级项目中的简单数据绑定
- 演练:文档级项目中的复杂数据绑定
- 概述:在 Office 解决方案中使用本地数据库文件
- 添加新数据源
- 将 Windows 窗体控件绑定到 Visual Studio 中的数据
- 如何:使用对象中的数据填充文档
- 如何:使用主机控件中的数据更新数据源
- 概述:在 Office 解决方案中使用本地数据库文件
- BindingSource 组件概述