Windows 窗体控件是用户可以与之交互以输入或操作数据的对象。 在 Microsoft Office Excel 和 Microsoft Office Word 的文档级项目中,你可以在设计时将 Windows 窗体控件添加到项目中的文档或工作簿,也可以在运行时以编程方式添加这些控件。 可以在 EXCEL 或 Word 的 VSTO 外接程序的运行时以编程方式将这些控件添加到任何打开的文档或工作表。
有关详细信息,请参阅 “如何:向 Office 文档添加 Windows 窗体控件”。
适用于: 本主题中的信息适用于 Excel 和 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
使用 Windows 窗体控件
可以将 Windows 窗体控件添加到文档和可自定义的用户界面 (UI) 元素中,包括操作窗格、自定义任务窗格和 Windows 窗体。 Windows 窗体控件在文档上的行为通常与这些其他 UI 元素上的行为相同,但确实存在一些差异。 有关信息,请参阅 Office 文档上的 Windows 窗体控件的限制。
决定是将 Windows 窗体控件添加到文档还是某些其他 UI 元素取决于几个因素。 设计解决方案的 UI 时,请考虑使用 Windows 窗体控件,如下表所述。
在文档中。
当您希望控件始终显示时。
如果希望用户直接在文档中输入数据,例如在编辑界面被锁定的基于表单的文档中。
如果希望控件与文档中的数据一致显示。 例如,如果要向列表对象的每一行添加按钮,则希望它们与每个列表项一致。
在操作窗格,或自定义任务窗格中。
想要向用户提供上下文信息时。
如果只想在文档中显示结果,而不是查询控件和数据。
如果要确保控件未随文档一起打印。
如果要确保控件不会干扰文档的视图。
在 Windows 窗体上。
想要控制 UI 的大小时。
当你想要阻止用户隐藏或删除控件时。
在需要从用户获取输入,并在收到输入之前阻止用户在文档中进行任何操作时。
以编程方式添加 Windows Forms 控件
可以在运行时将 Windows 窗体控件添加到 Word 文档和 Excel 工作表。 Visual Studio Tools for Office 运行时提供了用于添加常用 Windows Forms 控件的辅助方法。 借助这些帮助程序方法,你可以快速将控件添加到 Office 文档,并访问这些控件的组合 Windows 窗体控件功能和与 Office 相关的功能。
有关详细信息,请参阅 运行时向 Office 文档添加控件。
在文档级项目中使用 Windows 窗体控件
在文档中使用 Windows 窗体控件的某些方面对文档级项目是唯一的,这使你能够使用 Visual Studio 设计器设计文档的 UI。
创建自定义用户控件
可以将用户控件添加到项目,然后将其添加到 工具箱。 然后,可以将用户控件直接拖动到文档中,就像向文档添加 Windows 窗体控件一样。 创建用户控件时,需要记住一些事项:
不要创建 密封 的用户控件。 将控件拖动到文档时,Visual Studio 将生成一个派生自用户控件的包装类,以扩展它并支持其在文档中的使用。 如果用户控件 已密封,Visual Studio 将无法生成包装类。
用户控件必须将 ComVisibleAttribute 属性设置为 true。 默认情况下,在 Office 项目中创建的用户控件将此属性设置为 true ,但属于外部项目的用户控件可能未将此属性设置为 true。
将用户控件添加到文档后,请勿重命名或删除项目中的 UserControl 类。 如果需要更改用户控件的名称,必须先将其从文档中删除,然后在名称更改后再次添加。
在设计时排列控件
如果在设计时向 Word 和 Excel 文档添加多个控件,则可以使用 Visual Studio 中的 Microsoft Office Word 和 Microsoft Office Excel 工具栏快速设置所有选定控件的对齐方式。 只有在设计器中打开文档或工作表时,这些工具栏才可用。
在设计器中选择多个控件时,可以使用这些工具栏上的以下按钮来排列控件:
左对齐
居中对齐
对齐权限
对齐顶部
对齐中间
对齐底部
使水平间距相等
使垂直间距相等
注释
在 Word 项目中,仅当所选控件与文本不一致时,才会启用这些按钮。 默认情况下,在设计时添加到文档的控件与文本一致。
防止旧数据在加载期间出现在 Excel 工作簿中
在设计时向文档或工作表添加 Windows 窗体控件时,当用户关闭文档时,控件将保留在文档中。 在设计时添加 的控件也称为静态控件。
当打开包含静态控件的 Excel 工作簿时,工作簿在 ActiveX 控件中显示控件的位图,直到自定义代码运行并加载实际控件。 Excel 创建此位图,并在保存工作簿时将其存储在工作簿中。 上次保存工作簿时,位图显示了控件的外观,包括控件所显示的任何数据。 有关包含 Windows 窗体控件和位图的 ActiveX 控件的详细信息,请参阅 Office 文档中 Windows 窗体控件的限制。
在某些情况下,代码不会加载并且仅显示位图,例如当用户在设计模式下打开工作簿时。 此外,如果用户在未安装 Visual Studio Tools for Office 运行时的计算机上打开工作簿,则自定义项无法运行以加载控件,因此只有控件的位图可见。 在保存工作簿并将其发送给其他用户之前,应始终从工作簿控件中删除个人信息,以确保不会意外披露你的个人信息。
将控件大小与 Excel 工作表上的单元格大小匹配
您可以设置控件,使其在更改父单元格大小时自动调整自身的大小。 有关详细信息,请参阅 “如何:调整工作表单元格中的控件大小”。
添加所有工作表共享的组件
可以将希望在所有工作表中共享的组件(例如 DataSet)添加到工作簿设计器中,而不是直接添加到工作表中。 组件将显示在组件托盘上。
用于在 Excel 工作表上嵌入控件的公式
在 Excel 中选择控件时,公式栏中会显示 =EMBED(“WinForms.Control.Host”,“”。 此文本是必需的,不应删除。
Word 文档中控件的布局样式
使用 Visual Studio 设计器将控件添加到文档级项目中的 Word 文档时,该控件将随文本一起添加。 若要更改控件的布局样式,请右键单击控件,然后单击“设置控件格式”。 在“格式对象”对话框的“布局”页上选择一个换行样式。
在运行时将控件添加到 Word 文档时,可以通过使用某个类的不同 Add<控件类> 方法重载,来指定新控件的 ControlCollection 布局样式:
若要按照文本添加控件,请使用接受 Range 指定控件位置的重载。
若要将控件作为浮动对象添加,请使用一个能接受控件左坐标和顶坐标的重载。
有关详细信息,请参阅 运行时向 Office 文档添加控件。
如果在 Visual Studio 设计器中打开 Word 模板,则模板上的非内联控件可能不可见,因为 Visual Studio 在 普通 视图中打开模板。 若要查看控件,请将视图更改为 “打印布局”。
主文档正文外部的控件
页眉、页脚或子文档内部不支持 Windows Forms 控件。
在设计时添加组件
某些控件或组件在文档中不可见,而是显示在组件托盘中。 Visual Studio 为每个文档窗口提供组件托盘。 仅当文档中存在组件时,组件托盘才会在屏幕上显示。