自定义任务窗格概述
任务窗格是通常停靠在 Microsoft Office 应用程序中某一窗口一侧的用户界面面板。 自定义任务窗格为您提供了一个方法,使您可以创建自己的任务窗格并为用户提供熟悉的界面来访问您的解决方案的功能。 例如,界面可以包含运行代码以修改文档或显示来自数据源的数据的控件。
**适用于:**本主题中的信息适用于以下应用程序的应用程序级项目:Excel 2007 和 Excel 2010;InfoPath 2007 和 InfoPath 2010;Outlook 2007 和 Outlook 2010;PowerPoint 2007 和 PowerPoint 2010;Word 2007 和 Word 2010。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能。
提示
自定义任务窗格与操作窗格不同。 操作窗格是 Microsoft Office Word 和 Microsoft Office Excel 的文档级自定义项的一部分。 有关更多信息,请参见操作窗格概述。
自定义任务窗格的优点
使用自定义任务窗格,可以将各种功能集成到一个熟悉的用户界面中。 可以使用 Visual Studio 工具快速创建自定义任务窗格。
熟悉的用户界面
Microsoft Office system 中应用程序的用户已经熟悉使用任务窗格了,例如 Word 中的**“样式和格式”**任务窗格。 自定义任务窗格的行为类似于 Microsoft Office system 中的其他任务窗格。 用户可以将自定义任务窗格停靠在应用程序窗口的不同侧,或者可以将自定义任务窗格拖动到窗口中的任何位置。 可以创建一个外接程序,使之同时显示多个自定义任务窗格,而且用户可以分别控制每个任务窗格。
Windows 窗体支持
使用 Visual Studio 中的 Office 开发工具创建的自定义任务窗格的用户界面基于 Windows 窗体控件。 可以使用熟悉的 Windows 窗体设计器为自定义任务窗格设计用户界面。 还可以使用 Windows 窗体中的数据绑定支持将数据源绑定到任务窗格上的控件。
创建自定义任务窗格
可以用下面两个步骤创建基本的自定义任务窗格:
将 Windows 窗体控件添加到 UserControl 对象来为自定义任务窗格创建用户界面。
将用户控件传递到外接程序中的 CustomTaskPaneCollection 对象以实例化自定义任务窗格。 此集合返回一个新的 CustomTaskPane 对象,可用以修改任务窗格的外观并响应用户事件。
有关分步过程,请参见 如何:向应用程序中添加自定义任务窗格。
创建用户界面
使用 Visual Studio 中的 Office 开发工具创建的所有自定义任务窗格都包含一个 UserControl 对象。 此用户控件提供自定义任务窗格的用户界面。 可以在设计时或运行时创建用户控件。 如果在设计时创建用户控件,可以使用 Windows 窗体设计器构造任务窗格的用户界面。
实例化自定义任务窗格
创建包含自定义任务窗格用户界面的用户控件后,必须实例化 CustomTaskPane。 若要执行此操作,请调用一个 Add 方法将用户控件传递到 CustomTaskPaneCollection。 此集合公开为 ThisAddIn 类的 CustomTaskPanes 字段。 下面的代码示例应从 ThisAddIn 类中运行。
myUserControl1 = New MyUserControl
myCustomTaskPane = Me.CustomTaskPanes.Add(myUserControl1, "My Task Pane")
myCustomTaskPane.Visible = True
myUserControl1 = new MyUserControl();
myCustomTaskPane = this.CustomTaskPanes.Add(myUserControl1, "My Task Pane");
myCustomTaskPane.Visible = true;
Add 方法返回一个新的 CustomTaskPane 对象。 您可以使用此对象修改任务窗格的外观和响应用户事件。
在多个窗口中控制任务窗格
自定义任务窗格与文档框架窗口关联,该窗口向用户呈现文档或项的视图。 只有当关联的窗口可见时,该任务窗格才可见。
若要确定哪个窗口显示自定义任务窗格,请使用在创建任务窗格时的相应 Add 方法重载:
若要将任务窗格与活动窗口关联,请使用 CustomTaskPaneCollection.Add(UserControl, String) 方法。
若要将任务窗格与指定窗口承载的文档关联,请使用 CustomTaskPaneCollection.Add(UserControl, String, Object) 方法。
在多个窗口处于打开状态的情况下,某些 Office 应用程序需要显式指令来确定何时创建或显示任务窗格。 因此,务必要考虑在代码中的何处实例化自定义任务窗格,以确保任务窗格与应用程序中的相应文档或项一起出现。 有关更多信息,请参见 在多个应用程序窗口中管理自定义任务窗格。
从任务窗格中访问应用程序
如果要从用户控件中自动处理应用程序,您可以通过在代码中使用 Globals.ThisAddIn.Application 来直接访问对象模型。 静态 Globals 类提供对 ThisAddIn 对象的访问。 此对象的 Application 字段是进入应用程序对象模型的入口点。
有关 ThisAddIn 对象的 Application 字段的更多信息,请参见应用程序级外接程序编程。 有关演示如何从自定义任务窗格中自动处理应用程序的演练,请参见演练:从自定义任务窗格自动化应用程序。 有关 Globals 类的更多信息,请参见对 Office 项目中对象的全局访问。
管理任务窗格的用户界面
创建了用户窗格后,您可以使用 CustomTaskPane 对象的属性和事件来控制任务窗格的用户界面,并在用户更改任务窗格时进行响应。
使自定义任务窗格可见
默认情况下,任务窗格不可见。 若要使任务窗格可见,必须将 Visible 属性设置为 true。
用户可以通过单击任务窗格一角的**“关闭”**按钮 (X) 随时关闭任务窗格。 但是,没有可供用户再次打开自定义任务窗格的默认方法。 如果用户关闭自定义任务窗格,该用户将无法再次查看该自定义任务窗格,除非您为其提供显示窗格的方法。
如果您在外接程序中创建了自定义任务窗格,则还应当创建一个供用户单击来显示或隐藏该自定义任务窗格的 UI 元素,如按钮。 如果在支持自定义功能区的 Microsoft Office 应用程序中创建了自定义任务窗格,可以为向功能区中添加一个控件组,其中包含用于显示或隐藏自定义任务窗格的按钮。 有关演示如何执行此操作的演练,请参见演练:将自定义任务窗格与功能区按钮同步。
如果在不支持自定义功能区的 Microsoft Office 应用程序中创建了自定义任务窗格,可以添加一个显示或隐藏自定义任务窗格的 CommandBarButton。
修改任务窗格的外观
可以使用 CustomTaskPane 对象的属性控制自定义任务窗格的大小和位置。 可以使用自定义任务窗格中包含的 UserControl 对象的属性对自定义任务窗格的外观做出许多其他更改。 例如,可以使用用户控件的 BackgroundImage 属性为自定义任务窗格指定背景图像。
下表列出使用 CustomTaskPane 属性可以对自定义任务窗格做出的更改。
任务 |
Property |
---|---|
更改任务窗格的大小 |
|
更改任务窗格的位置 |
|
隐藏或显示任务窗格 |
|
禁止用户更改任务窗格的位置 |
对自定义任务窗格事件进行编程
您可能希望外接程序在用户修改自定义任务窗格时进行响应。 例如,如果用户将窗格方向从垂直更改为水平,您可能要重新定位控件。
下表列出可以对其进行处理以响应用户对自定义任务窗格所做更改的事件。
任务 |
Event |
---|---|
当用户更改任务窗格的位置时进行响应。 |
|
当用户隐藏任务窗格或使其可见时进行响应。 |
清理任务窗格使用的资源
创建了自定义任务窗格后,只要外接程序在运行,CustomTaskPane 对象就会保留在内存中。 即使当用户单击任务窗格一角的**“关闭”**按钮 (X) 后,对象仍然保留在内存中。
若要在外接程序仍在运行时清理任务窗格使用的资源,请使用 Remove 或 RemoveAt 方法。 这些方法从 CustomTaskPanes 集合中移除指定的 CustomTaskPane 对象,并调用该对象的 Dispose() 方法。
Visual Studio Tools for Office Runtime 会在卸载外接程序时自动清理自定义任务窗格使用的资源。 不要在项目中的 ThisAddIn_Shutdown 事件处理程序中调用 Remove 或 RemoveAt 方法。 这些方法将引发 ObjectDisposedException,因为 Visual Studio Tools for Office Runtime 会在调用 ThisAddIn_Shutdown 之前清理 CustomTaskPane 对象使用的资源。 有关 ThisAddIn_Shutdown的更多信息,请参见Office 项目中的事件。