重要
从 Office 2024 开始,“操作”功能已从 Microsoft Word 中停用。 此功能仅在具有以下 Office 版本的 Microsoft Word 中可用:
- Microsoft 365
- Office LTSC Professional Plus 2021
- Office LTSC Standard 2021
- Office Professional Plus 2016,2019
- Office Standard 2016,2019
操作窗格是附加到特定 Microsoft Office Word 文档或 Microsoft Office Excel 工作簿的可自定义 文档操作 任务窗格。 操作窗格位于 Office 的任务窗格中,与其他内置任务窗格一起,例如 Excel 中的XML 源任务窗格或 Word 中的样式和格式任务窗格。 可以使用 Windows 窗体控件或 WPF 控件设计操作窗格界面。
适用于: 本主题中的信息适用于 Excel 和 Word 的文档级项目。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
只能在 Word 或 Excel 的文档级自定义中创建操作窗格。 无法在 VSTO 外接程序中创建操作窗格。 有关详细信息,请参阅 Office 应用程序和项目类型提供的功能。
注释
操作窗格与自定义任务窗格不同。 自定义任务窗格与应用程序相关联,而不是特定文档。 可以在 VSTO 外接程序中为某些 Microsoft Office 应用程序创建自定义任务窗格。 有关详细信息,请参阅 “自定义任务”窗格。
显示动作窗格
操作窗格由 ActionsPane 类表示。 当你创建文档级项目时,通过使用项目中 ThisWorkbook
(针对 Excel)或 ThisDocument
(针对 Word)类的 ActionsPane
字段向你的代码提供此类的实例。 若要显示操作窗格,请将 Windows 窗体控件添加到 ActionsPane
字段的 Controls 属性。 下面的代码示例将名为 actions
的控件添加到操作窗格。
将控件显式添加到操作窗格后,该窗格即在运行时变得可见。 任务窗格显示后,可以动态添加或删除控件,以响应用户的操作。 通常,您可以在ThisDocument
或ThisWorkbook
的事件处理程序中添加代码,以显示操作窗格,从而在用户首次打开文档时使操作窗格可见。 但是,您可能只希望在用户在文档中执行操作时显示操作窗格。 例如,可以将代码添加到文档中某个控件的Click
事件。
向操作窗格添加多个控件
向作窗格添加多个控件时,应将用户控件中的控件分组,然后将用户控件添加到 Controls 属性。 此过程包括以下步骤:
通过将 操作窗格控件 或 用户控件 项添加到项目来创建操作窗格的用户界面(UI)。 这两个项目都包含自定义 Windows 窗体 UserControl 类。 动作窗格控件和用户控件项等效,唯一的区别是其名称。
使用设计器或编写代码将 Windows 窗体控件添加到 UserControl。
注释
还可以通过将 WPF UserControl 添加到 Windows 窗体 UserControl 来将 WPF 控件添加到操作窗格。 有关详细信息,请参阅 在 Office 解决方案中使用 WPF 控件。
将自定义用户控件的实例添加到项目中
ThisWorkbook
(针对 Excel)或ThisDocument
(针对 Word)类的ActionsPane
字段中所内含的控件。有关更详细地演示此过程的示例,请参阅 “如何:向 Word 文档或 Excel 工作簿添加作”窗格。
隐藏操作窗格
尽管ActionsPane类具有Hide方法和Visible属性,但不能通过使用ActionsPane类本身的任何成员从用户界面中删除操作窗格。 调用Hide方法或将Visible属性设置为false时,仅隐藏动作窗格上的控件;它不隐藏任务窗格。
若要隐藏解决方案中的任务窗格,可以选择以下几个选项:
对于 Word,把表示“文档操作”任务窗格的对象的Visible属性TaskPane设置为false。 下面的代码示例旨在从项目中的
ThisDocument
类运行。对于 Excel,请将DisplayDocumentActionTaskPaneApplication对象的属性设置为 false。 下面的代码示例旨在从项目中的
ThisWorkbook
类运行。对于 Word 或 Excel,也可以将表示任务窗格的命令栏的属性设置为 Visiblefalse。 下面的代码示例旨在从项目中的
ThisDocument
或ThisWorkbook
类运行。
在打开文档时清除操作窗格
当用户在操作窗格可见的情况下保存文档时,无论操作窗格是否包含任何控件,每次打开文档时,操作窗格都会显示。 如果要控制何时出现,请在ThisDocument
或ThisWorkbook
的事件处理程序中调用ActionsPane
字段的Clear方法,以确保打开文档时操作窗格不可见。
确定操作窗格何时关闭
关闭操作窗格时,不会引发任何事件。 尽管 ActionsPane 类具有 VisibleChanged 事件,但当最终用户关闭操作窗格时,不会引发此事件。 相反,当操作窗格上的控件通过调用 Hide 方法或将 Visible 属性设置为 false 时被隐藏时,就会引发此事件。
当用户关闭作窗格时,用户可以通过在应用程序的用户界面(UI)中执行以下过程之一来再次显示它。
通过 Word 或 Excel 的 UI 显示操作窗格
在功能区上,单击“ 视图 ”选项卡。
在“显示/隐藏”组中,单击“文档操作”切换按钮。
程序操作窗格事件
可以将多个用户控件添加到作窗格,然后编写代码以响应文档上的事件,方法是显示和隐藏用户控件。 如果将 XML 架构元素映射到文档,则只要插入点位于其中一个 XML 元素内,就可以在作窗格中显示某些用户控件。 有关详细信息,请参阅 如何:在 Visual Studio 内将架构映射到 Word 文档 和 如何:在 Visual Studio 内将架构映射到工作表。
还可以编写代码来响应任何对象的事件,包括主机控件、应用程序或文档事件。 有关详细信息,请参阅演练:针对 NamedRange 控件的事件进行编程。
将数据绑定到操作窗格上的控件
操作窗格上的控件具有与 Windows 窗体上的控件相同的数据绑定功能。 可以将控件绑定到数据源,例如数据集、类型化数据集和 XML。 有关详细信息,请参阅 数据绑定和 Windows 窗体。
可以将作窗格上的控件和文档上的控件绑定到同一数据集。 例如,可以在操作窗格上的控件和工作表上的控件之间创建主从关系。 有关详细信息,请参阅 演练:将数据绑定到 Excel 操作窗格上的控件。
验证动作窗格控件中的数据
如果在操作窗格上的控件的事件处理器中Validating显示消息框,当焦点从控件移动到消息框时,可能会再次引发该事件。 若要防止此问题,请使用 ErrorProvider 控件显示任何验证错误消息。
用户控制堆叠顺序
如果你正在使用多个用户控件,则无论用户控件是垂直停靠还是水平停靠,你都可以编写代码以在操作窗格上堆叠这些控件。 可以使用 StackOrder 属性的 StackStyle 枚举来设置操作窗格上用户控件的堆叠顺序。 有关详细信息,请参阅 “如何:管理操作窗格上的控件布局”。
该 StackOrder 属性可以采用以下 StackStyle 枚举值。
堆叠样式 | 定义 |
---|---|
FromBottom | 从操作窗格底部堆叠。 |
FromLeft | 从操作窗格左侧堆叠。 |
FromRight | 从操作窗格右侧堆叠。 |
FromTop | 从操作窗格顶部堆叠。 |
没有 | 未定义堆叠顺序;订单由开发人员控制。 |
以下代码设置StackOrder属性,以便从操作窗格顶部堆叠用户控件。
锚点控件
如果用户在运行时调整操作窗格的大小,控件可以随操作窗格一起调整大小。 可以使用 Windows 窗体控件的 Anchor 属性将控件锚定到操作窗格。 还可以以相同的方式将 Windows 窗体控件固定到用户控件上。 有关详细信息,请参阅 “如何:在 Windows 窗体上定位控件”。
调整操作窗格的大小
无法直接更改 ActionsPane 的大小,因为 ActionsPane 嵌入在任务窗格中。 但是,可以通过设置 Width 表示任务窗格的属性,以编程方式更改任务窗格的 CommandBar 宽度。 如果任务窗格水平停靠或浮动,则可以更改任务窗格的高度。
不建议以编程方式调整任务窗格的大小,因为用户应能够选择最适合其需求的任务窗格大小。 但是,如果必须调整任务窗格的宽度,则可以使用以下代码来实现此任务。
重新定位操作窗格
你无法直接重新定位ActionsPane,因为它嵌入在任务窗格中。 但是,可以通过设置 Position 表示任务窗格的属性 CommandBar ,以编程方式移动任务窗格。
不建议以编程方式重新定位任务窗格,因为用户应能够选择最适合其需求的屏幕上的任务窗格位置。 但是,如果必须将任务窗格移动到特定位置,则可以使用以下代码来实现此任务。
注释
最终用户可以随时手动重新定位任务窗格。 无法确保任务窗格将保留在以编程方式指示的位置。 然而,您可以检查方向变化,并确保操作窗格上的控件按正确的方向顺序排列。 有关详细信息,请参阅 “如何:管理动作窗格上的控件布局”。
设置 ActionsPane 的 Top 和 Left 属性不会改变其位置,因为 ActionsPane 对象嵌入在任务窗格中。
如果任务窗格未停靠,则可设置表示任务窗格的 CommandBar 的 Top 和 Left 属性。 下列代码将未停靠的任务窗格移动到文档的左上角。
if (this.CommandBars["Task Pane"].Position ==
Microsoft.Office.Core.MsoBarPosition.msoBarFloating)
{
this.CommandBars["Task Pane"].Top = 0;
this.CommandBars["Task Pane"].Left = 0;
}