添加到 Microsoft Office Word 文档或 Microsoft Office Excel 工作表的 Windows 窗体控件与添加到 Windows 窗体的 Windows 窗体控件之间存在一些差异。 例如,向文档添加 Button 控件时,属性(例如 Dock、Anchor 和 TabIndex)的行为可能不会如您所期望的那样。
其中许多差异是由于 Windows 窗体控件托管在文档上的方式造成的。 将 Windows 窗体控件添加到文档时,Visual Studio Tools for Office 运行时会嵌入一个 ActiveX 控件,该控件随后将托管文档中的 Windows 窗体控件。 Windows 窗体控件不会直接嵌入到文档中。
适用于: 本主题中的信息适用于 Excel 和 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
Windows 窗体控件的方法和属性的限制
许多 Windows 窗体控件的方法和属性在文档上的工作方式与在 Windows 窗体上的工作方式不同,因此,建议不要使用它们。 例如,设置诸如 Dock 和 Anchor 的属性仅影响控件相对于容器 ActiveX 控件的位置,而不是相对于文档的位置。 下面是 Word 和 Excel 的 Windows 窗体控件不受支持的方法和属性的列表:
Excel 控件不受支持的属性:
Word 控件不支持的方法和属性:
也不能设置 Left 与 Word 文档中的文本一致的 Windows 窗体控件或 Top 属性。 在以下情况下,Windows 窗体控件会与文本对齐添加:
以编程方式将控件添加到 Word 文档,并使用指定位置范围的方法。
在设计时向 Word 文档添加 Windows 窗体控件。 可以通过修改设计器中的控件来更改此项。
Office 文档中 Windows 窗体控件的差异
Windows 窗体控件在 Office 文档中的行为通常与 Windows 窗体上的行为相同,但确实存在一些差异。 下表描述了 Windows 窗体控件在 Office 文档中存在的差异。
| 功能性 | 差异 |
|---|---|
| 控制选项卡顺序 | 不能通过使用 Tab 键在 Excel 工作表或 Word 文档上的控件之间切换。 |
| 控件分组 | 不能使用 GroupBox 控件来包含 Office 文档上的其他控件。 将多个单选按钮直接添加到文档中时,单选按钮不相互排斥。 可以编写代码,使单选按钮互斥;但是,首选方法是将单选按钮添加到用户控件,然后将用户控件添加到文档中。 有关详细信息,请参阅 Office 开发示例和演练中的 Word 控件示例或 Excel 控件示例。 |
| 控件类型 | 用于文档的 Windows 窗体控件由 Visual Studio Tools for Office 运行时提供的类加以包装,为这些控件在 Excel 工作表或 Word 文档中增加了特定的附加功能。 例如,如果在 Excel 工作表上有一个 Button 控件,请确保在引用或强制转换对象时指定类型为Button而不是Button。 |
| 控制位置和大小 | 控件的大小和位置由属于容器 ActiveX 控件的属性决定。 ActiveX 控件属性采用的值不同于 Windows 窗体控件的等效属性。 设置控件的 Top、Left、Height 或 Width 属性时,它们的单位是磅,而不是像素。 |
| 在 Word 文档中调整位置 | 如果将控件添加到基于流的布局,请记住,随着内容更改,控件将随内容一起流动。 从 工具箱 中拖动控件时,无法将控件定位到段落,因为该控件将按照文本一致添加到 Word 文档中。 如果使用另一种方法添加控件,例如双击控件,则会根据设置用于插入图片的 Word 选项插入控件。 不能设置内联文本的控件的 Left 或 Top 属性。不能将控件放在页眉或页脚中,也不能放在子文档中。 |
| 控制事件 | 选择控件后,它会按以下顺序引发事件: 1. Enter2. GotFocus取消选择该控件时,会按以下顺序触发事件: 1. Leave2. Validating3. Validated4. LostFocus |
| 控制缩放 | 当您将文档的缩放设置更改为非100%时,控件会被禁用,但看起来会随文档一起缩放。 例如,如果文档在 130% 缩放时单击某个按钮,则会显示控件已禁用的消息,直到缩放设置为 100%。 将缩放更改为 100%时,控件将正常工作。 |
| 控件属性值 | 尽管 Windows 窗体上的控件的属性设置为整数值,但它们设置为 Word 文档中的控件的单个属性。 在 Excel 中,控件的属性值设置为双精度值。 如果工作表上的控件的Height和Width属性超过工作表或屏幕的大小,那么其值将被截断。 |
| 控制尺寸调整 | 如果使用八个大小控点之一调整文档上的控件大小,则在重新选择控件之前,新控件维度不会反映在 “属性” 窗口中。 |
| 控制行为 | 当拆分工作表窗口时,Excel 工作表上的控件的行为可能不可预知。 例如,可能仅在其中一个窗口中才能访问工作表上的TextBox。 |
| 控件命名 | 不能使用保留字来命名控件。 例如,如果将 a Button 添加到工作表并将名称更改为 “系统”,则生成项目时会发生错误。 |
| 以编程方式添加控件 | 不要使用控件的构造函数在运行时向文档添加控件。 改用 Visual Studio Tools for Office 运行时提供的辅助方法。 例如,使用 AddButton 该方法向工作表添加按钮。 如果要添加这些帮助程序方法不支持的控件,可以使用该方法 AddControl 。 有关详细信息,请参阅 运行时向 Office 文档添加控件。 |
| 复制控件 | 如果复制 Windows 窗体控件并在运行时将其粘贴到文档中,则会将空容器 ActiveX 控件粘贴到文档中。 Windows 窗体控件不会显示在新位置,原始控件背后的代码不会复制到容器 ActiveX 控件。 |
文档级项目中的限制
对文档使用 Windows 窗体控件的一些限制对文档级项目是唯一的。
设计时控制支持
当 Excel 工作表或 Word 文档在 Visual Studio 设计器中打开时,某些 Windows 窗体控件将从 工具箱 中删除。 这是因为技术限制或 Word 或 Excel 中已提供该功能。 Excel 和 Word 项目支持当文档具有焦点时出现在 工具箱 中的所有 Windows 窗体控件和其他组件,还可以将第三方控件添加到工作表或文档。
注释
当文档受到保护时,将从 工具箱 中删除所有控件。 有关文档保护的信息,请参阅 文档级解决方案中的文档保护。
注释
第三方控件必须将 ComVisibleAttribute 属性设置为 true 才能在 Office 解决方案中使用。
工具箱中不提供以下控件和组件:
对旧版 ActiveX 控件的支持
如果创建使用现有 Word 文档或包含 ActiveX 控件的 Excel 工作簿的文档级 Office 项目,则 ActiveX 控件的功能不会丢失;但是,不支持从 Visual Studio 中向文档添加新的 ActiveX 控件。 例如,如果 Word 文档具有运行 Visual Basic for Applications(VBA)宏的 控件 工具箱中的按钮,它将在 Office 项目中使用文档后继续运行宏。 但是,建议删除 ActiveX 控件和 VBA 宏,并将其替换为 Windows 窗体控件和托管代码。