办公室 文档中Windows 窗体控件的限制

Windows 窗体控件添加到Microsoft 办公室 Word 文档或Microsoft 办公室 Excel 工作表中,以及添加到Windows 窗体的Windows 窗体控件之间存在一些差异。 例如,向文档添加 Button 控件时,属性(例如 DockAnchor)的行为 TabIndex 不如预期。

其中许多差异是由于Windows 窗体控件托管在文档上的方式造成的。 将Windows 窗体控件添加到文档中时,Visual Studio Tools for 办公室 运行时会嵌入一个 ActiveX 控件,该控件随后在文档中承载Windows 窗体控件。 Windows 窗体控件不直接嵌入到文档中。

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

Windows 窗体控件的方法和属性的限制

Windows 窗体控件的方法和属性与在 Windows 窗体上的工作方式不同,因此,建议不要使用它们。 例如,设置属性(例如 Dock ,仅 Anchor 影响控件相对于容器 ActiveX 控件)的位置,而不是文档。 下面是 Word 和 Excel 的Windows 窗体控件不受支持的方法和属性的列表:

也不能设置Left与 Word 文档上的文本一致的Windows 窗体控件的 or Top 属性。 以下情况下,Windows 窗体控件与文本一起添加:

  • 以编程方式将控件添加到 Word 文档,并使用指定位置范围的方法。

  • 在设计时向 Word 文档添加Windows 窗体控件。 可以通过修改设计器中的控件来更改此项。

办公室文档中Windows 窗体控件的差异

Windows 窗体控件在办公室文档中的行为通常与在 Windows 窗体上的行为相同,但确实存在一些差异。 下表描述了办公室文档中Windows 窗体控件存在的差异。

功能 差异
控件选项卡顺序 不能通过放置在 Excel 工作表或 Word 文档上的控件进行选项卡。
控件分组 不能使用GroupBox控件来包含办公室文档上的其他控件。 将多个单选按钮直接添加到文档中时,单选按钮不相互排斥。 可以编写代码,使单选按钮互斥;但是,首选方法是将单选按钮添加到用户控件,然后将用户控件添加到文档中。 有关详细信息,请参阅办公室开发示例和演练中的 Word 控件示例或 Excel 控件示例。
控件类型 Windows 窗体文档上使用的控件包装在 Visual Studio Tools for 办公室 运行时提供的类中,该类为特定于 Excel 工作表或 Word 文档的控件提供附加功能。 例如,如果在 Excel 工作表上有一个 Button 控件,请确保指定类型而不是ButtonButton引用或强制转换对象时。
控制位置和大小 控件的大小和位置由属于容器 ActiveX 控件的属性决定。 ActiveX 控件属性采用的值不同于Windows 窗体控件的等效属性。 设置控件的 TopLeftHeightWidth属性时,它以磅而不是像素为单位。
Word 文档上的控制位置 如果将控件添加到基于流的布局,请记住,随着内容更改,控件将随内容一起流动。 从工具箱中拖动控件时,无法将控件定位到段落,因为该控件将按照文本一致添加到 Word 文档中。 如果使用另一种方法添加控件,例如双击控件,则会根据设置用于插入图片的 Word 选项插入控件。

不能设置 Left 与文本内联的控件的 or Top 属性。

不能将控件放在页眉或页脚中,也不能放在子文档中。
控件事件 选择控件后,它会按以下顺序引发事件:

1. Enter
2. GotFocus

取消选择控件时,它会按以下顺序引发事件:

1. Leave
2. Validating
3. Validated
4. LostFocus
控制缩放 将文档的缩放设置更改为 100% 以外的任何控件时,将禁用控件,尽管它们似乎与文档一起缩放。 例如,如果在文档的缩放比例为 130% 时单击某个按钮,则会显示一条消息,指出控件已被禁用,直到缩放设置为 100%。 将缩放更改为 100% 时,控件将正常工作。
控件属性值 尽管 Windows 窗体上的控件的属性设置为整数值,但它们设置为 Word 文档中的控件的单个属性。 在 Excel 中,控件的属性值设置为双精度值。 Height如果工作表上的控件和Width属性超过工作表或屏幕的大小,则该值将被截断。
控制调整大小 如果使用八个大小控点之一调整文档上的控件大小,则在重新选择控件之前,新控件维度不会反映在 “属性” 窗口中。
控制行为 当拆分工作表窗口时,Excel 工作表上的控件的行为可能不可预知。 例如,对工作表上的访问 TextBox 可能仅在其中一个窗口中可用。
控件命名 不能使用保留字来命名控件。 例如,如果将 a Button 添加到工作表并将名称 更改为“系统”,则生成项目时会发生错误。
以编程方式添加控件 不要使用控件的构造函数在运行时向文档添加控件。 请改用 Visual Studio Tools 为办公室运行时提供的帮助程序方法。 例如,使用 AddButton 该方法向工作表添加按钮。 如果要添加这些帮助程序方法不支持的控件,可以使用该方法 AddControl 。 有关详细信息,请参阅在运行时向办公室文档添加控件。
复制控件 如果复制Windows 窗体控件并在运行时将其粘贴到文档中,则会将空容器 ActiveX 控件粘贴到文档中。 Windows 窗体控件不会出现在新位置,原始控件背后的代码不会复制到容器 ActiveX 控件。

文档级项目中的限制

对文档使用Windows 窗体控件的某些限制对文档级项目是唯一的。

设计时控制支持

在 Visual Studio 设计器中打开 Excel 工作表或 Word 文档时,某些Windows 窗体控件将从工具箱中删除。 这是因为技术限制或 Word 或 Excel 中已提供该功能。 Excel 和 Word 项目支持文档具有焦点时工具箱中显示的所有Windows 窗体控件和其他组件,还可以向工作表或文档添加第三方控件。

注意

当文档受到保护时,将从工具箱中删除所有控件。 有关文档保护的信息,请参阅 文档级解决方案中的文档保护。

注意

第三方控件必须将ComVisibleAttribute属性设置为 true 才能在办公室解决方案中使用。

工具箱不提供以下控件和组件:

对旧版 ActiveX 控件的支持

如果创建使用包含 ActiveX 控件的现有 Word 文档或 Excel 工作簿的文档级办公室项目,则 ActiveX 控件的功能不会丢失;但是,不支持从 Visual Studio 中向文档添加新的 ActiveX 控件。 例如,如果 Word 文档具有运行 Visual Basic for Applications (VBA) 宏的控件工具箱中的按钮,则它将在文档在办公室项目中使用后继续运行宏。 但是,建议删除 ActiveX 控件和 VBA 宏,并将其替换为Windows 窗体控件和托管代码。