Office 文档上的 Windows 窗体控件概述

Windows 窗体控件是用户可与之交互以便输入或操作数据的对象。在 Microsoft Office Excel 和 Microsoft Office Word 的文档级项目中,您可以在设计时向文档或工作簿中添加 Windows 窗体控件,也可以通过编程方式在运行时添加这些控件。在 Excel 或 Word 的应用程序级外接程序中,可以通过编程方式在运行时向任何打开的文档或工作表中添加这些控件。

有关更多信息,请参见如何:为 Office 文档添加 Windows 窗体控件

**适用于:**本主题中的信息适用于以下应用程序的文档级项目和应用程序级项目:Excel 2013 和 Excel 2010;Word 2013 和 Word 2010。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

使用 Windows 窗体控件

可以将 Windows 窗体控件添加到文档或可自定义用户界面 (UI) 元素中,自定义用户界面元素包括操作窗格、自定义任务窗格和 Windows 窗体。通常,Windows 窗体控件在文档上的行为与在这些其他 UI 元素上的行为相同,但是也存在一些差异。有关信息,请参见 Office 文档上的 Windows 窗体控件的限制

将 Windows 窗体控件添加到文档中还是添加到某个其他 UI 元素中的决定,取决于多个因素。设计解决方案的 UI 时,请考虑下表中描述的 Windows 窗体控件的用法。

  • 在文档上。

    • 希望始终显示控件时。

    • 希望用户在文档中直接输入数据时,例如,在编辑图面已锁定的基于窗体的文档中。

    • 希望控件与文档中的数据一起显示时。例如,如果正向列表对象的每一行添加按钮,您将希望这些按钮嵌入到每个列表项中。

  • 在操作窗格或自定义任务窗格上。

    • 希望为用户提供上下文信息时。

    • 只希望结果(而非查询控件和数据)显示在文档中时。

    • 希望确保控件不与文档一起打印时。

    • 希望确保控件不会影响文档的视图时。

  • 在 Windows 窗体上。

    • 希望控制 UI 的大小时。

    • 希望防止用户隐藏或删除控件时。

    • 希望获取用户输入,并防止用户在输入被接收之前在文档中执行任何操作时。

以编程方式添加 Windows 窗体控件

可以在运行时向 Word 文档和 Excel 工作表添加 Windows 窗体控件。Visual Studio Tools for Office Runtime提供了用于添加最常用的 Windows 窗体控件的 Helper 方法。利用这些帮助器方法,可以快速向 Office 文档添加控件并访问这些控件的组合的 Windows 窗体控件功能及 Office 相关功能。

有关更多信息,请参见在运行时向 Office 文档添加控件

在文档级项目中使用 Windows 窗体控件

在文档上使用 Windows 窗体控件的某些方面是特定于文档级项目的,它们允许您使用 Visual Studio 设计器设计文档的 UI。

0x6hstz2.collapse_all(zh-cn,VS.110).gif创建自定义用户控件

可以将用户控件添加到项目中,然后将其添加到**“工具箱”**。然后可以将用户控件直接拖动到文档中,与向文档添加 Windows 窗体控件的操作一样。在创建用户控件时,需要注意以下事项:

  • 请勿创建 sealed 用户控件。将控件拖到文档中时,Visual Studio 会生成一个从该用户控件派生的包装类,以扩展该用户控件并支持在文档上使用该用户控件。如果该用户控件为 sealed,则 Visual Studio 不能生成包装类。

  • 用户控件必须将 ComVisibleAttribute 特性设置为 true。在 Office 项目内创建的用户控件的此特性默认设置为 true,但属于外部项目的用户控件可能没有将此特性设置为 true。

  • 向文档添加了用户控件后,请不要在项目内对 UserControl 类重命名或将其删除。如果需要更改用户控件的名称,必须首先将其从文档中删除,更改了名称后,再将其添加到文档中。

0x6hstz2.collapse_all(zh-cn,VS.110).gif在设计时排列控件

如果在设计时将多个控件添加到 Word 和 Excel 文档中,则可以在 Visual Studio 中使用**“Microsoft Office Word”“Microsoft Office Excel”**工具栏来快速设置所有选定控件的排列。仅当文档或工作簿在设计器中打开时,这些工具栏才可用。

在设计器中选定多个控件后,可以使用这些控件上的以下按钮来排列这些控件:

  • 左对齐

  • 居中对齐

  • 右对齐

  • 顶端对齐

  • 中间对齐

  • 底端对齐

  • 使水平间距相等

  • 使垂直间距相等

说明说明

在 Word 项目中,仅当所选控件未与文本对齐时,这些按钮才启用。默认情况下,在设计时添加到文档中的控件与文本对齐。

0x6hstz2.collapse_all(zh-cn,VS.110).gif防止加载过程中在 Excel 工作簿中显示旧数据

在设计时将 Windows 窗体控件添加到文档或工作表中后,在用户关闭文档时,这些控件将保留在文档中。在设计时添加的控件也称为“静态控件”。

打开一个包含静态控件的 Excel 工作簿后,该工作簿会在 ActiveX 控件中显示静态控件的位图,直到自定义项代码运行并加载实际控件。Excel 创建此位图,并在每次保存工作簿时将位图存储在工作簿中。位图显示上次保存工作簿时控件的外观,包括控件显示的所有数据。有关包含 Windows 窗体控件和位图的 ActiveX 控件的更多信息,请参见 Office 文档上的 Windows 窗体控件的限制

某些情况下,代码不会进行加载而仅显示位图,例如当用户在设计模式下打开工作簿时。而且,如果用户在未安装 Visual Studio Tools for Office Runtime的计算机上打开工作簿,自定义项将无法运行以加载控件,因此只有控件的位图是可见的。在保存工作簿并将其发送到其他用户之前,应总是从工作簿上的控件中移除个人信息,以确保不会意外泄漏您的个人信息。

0x6hstz2.collapse_all(zh-cn,VS.110).gif与单元格大小匹配的控件大小在 Excel 工作表

可以将控件设置为当父单元格的大小更改时自动调整大小。有关更多信息,请参见如何:调整工作表单元格中的控件的大小

0x6hstz2.collapse_all(zh-cn,VS.110).gif添加由所有工作表共享的组件

可以将您希望在所有工作表之间共享的组件(如 DataSet)添加到工作簿设计器而不是工作表。该组件将出现在组件栏中。

0x6hstz2.collapse_all(zh-cn,VS.110).gif嵌入的控件在 Excel 工作表公式

在 Excel 中选择一个控件时,“编辑栏”中将显示“=EMBED("WinForms.Control.Host","")”。此文本是必需的,不应删除。

0x6hstz2.collapse_all(zh-cn,VS.110).gif控件布局样式在 Word 的文档

如果在文档级项目中使用 Visual Studio 设计器向 Word 文档中添加控件,则该控件嵌入到文本中。若要更改控件的布局样式,请右击控件,然后单击**“设置控件格式”。在“设置对象格式”对话框的“布局”**页上,选择换行样式。

在运行时向 Word 文档中添加控件时,可以使用 Microsoft.Office.Tools.Word.ControlCollection 类的不同 Add<控件类> 方法重载来指定此新控件的布局样式。

  • 若要将控件嵌入到文本中,请使用接受 Range(用于指定该控件的位置)的重载。

  • 若要将控件作为浮点形状添加到文档中,请使用接受此控件的左边缘和上边缘坐标的重载。

有关更多信息,请参见在运行时向 Office 文档添加控件

如果在 Visual Studio 设计器中打开 Word 模板,则模板上的非内联控件可能不可见,因为 Visual Studio 在**“普通”视图中打开该模板。若要查看控件,请将视图更改为“打印布局”**。

0x6hstz2.collapse_all(zh-cn,VS.110).gif在文档主体外部的控件

页眉或页脚内、或子文档内不支持 Windows 窗体控件。

0x6hstz2.collapse_all(zh-cn,VS.110).gif在设计时添加组件

一些控件或组件在文档中不可见,而是显示在组件栏中。Visual Studio 为每个文档窗口都提供了一个组件栏。仅当文档中存在组件时,组件栏才会显示在屏幕上。

请参见

任务

如何:为 Office 文档添加 Windows 窗体控件

如何:调整工作表单元格中的控件的大小

如何:在打印时隐藏工作表的控件

演练:使用 CheckBox 控件更改工作表格式设置

演练:使用 CheckBox 控件更改文档格式设置

演练:使用按钮在工作表的文本框中显示文本

演练:使用按钮在文档的文本框中显示文本

演练:使用单选按钮更新文档中的图表

演练:使用单选按钮更新工作表中的图表

参考

ControlCollection.Remove

ControlCollection.Remove

概念

在运行时向 Office 文档添加控件

宿主项和宿主控件概述

Office 文档上的 Windows 窗体控件的限制

Office 文档上的 Windows 窗体控件的限制

其他资源

Office 文档上的控件

操作窗格概述

Windows 窗体控件