UI 管理器示例
更新:2007 年 11 月
![]() |
---|
此示例只能在 Microsoft Office Outlook 2007 中运行。 |
此示例演示如何通过在外接程序中实现可扩展接口来自定义 Microsoft Office Outlook 2007 的用户界面 (UI)。此示例使用可扩展接口来创建一个功能区自定义项、一个自定义任务窗格和一个自定义窗体区域。
此示例还演示一种为特定检查器窗口协调自定义 UI 元素的方法。此示例中的代码确保检查器中的功能区自定义项、自定义任务窗格和自定义窗体区域能够正确地互相通信。它们的通信必须独立于可能在其他检查器中打开的这些自定义 UI 元素的实例。
例如,用户可能打开了多个检查器,每个检查器都有一个自定义功能区、任务窗格和窗体区域。当用户与这些元素中的一个交互时(例如,单击功能区中的一个按钮),可能对另一个元素造成更改(例如,隐藏任务窗格)。此代码必须确保只影响一个检查器中的元素,而不会影响其他检查器中的这些自定义 UI 元素的实例。
此示例使用一组对检查器和自定义任务窗格对象进行包装的类,以确保在用户打开每项任务和每封电子邮件时都会显示一个新的任务窗格。此示例还创建自定义功能区按钮,这些按钮可用于在每项任务或每封电子邮件中隐藏或显示任务窗格,并在每项任务中显示一个自定义窗体区域。有关此示例的结构的更多信息,请参见 UI 管理器组件示例。
有关如何在计算机上安装示例项目的信息,请参见 如何:安装和使用“帮助”中找到的示例文件。
![]() |
---|
此示例使用可扩展接口创建功能区自定义项、自定义任务窗格和窗体区域,事实上,Visual Studio Tools for Office 提供的类和设计器也是可以使用的。这些类和设计器简化了这些功能的使用过程。有关更多信息,请参见功能区设计器、自定义任务窗格概述和创建 Outlook 窗体区域。 |
![]() |
---|
此示例代码的用途在于阐释概念,因此只显示了与该概念相关的代码。示例代码不一定满足特定环境的安全要求,不应原样照搬使用。我们建议您添加安全性代码和错误处理代码,让您的项目更加安全可靠。Microsoft 按“原样”提供此示例代码,不提供任何保证。 |
运行此示例
按 F5。
在 Outlook 中,创建一项新任务。
在任务功能区上单击“Add-Ins”(外接程序)选项卡。
在“UI Manager”(UI 管理器)组中,单击“TaskPane”(任务窗格)按钮。
确认“SimpleControl”(简单控件)任务窗格出现在任务窗口旁边。
在“Show”(显示)组中,单击“UIM”(UIM)按钮。
确认自定义窗体区域出现在打开的任务的阅读窗格中。窗体区域显示一个咖啡豆列表和一个文本框,该文本框包含已下的咖啡订单数量。
在窗体区域中选择一种或多种咖啡豆:
确认所选择的每种咖啡豆都添加到“SimpleControl”(简单控件)任务窗格中。
在功能区上单击“Add-in Services”(外接程序服务)组的“Send”(发送)按钮。
确认向收件人 someone@example.com 发送了一封新电子邮件,并且该电子邮件包含在窗体区域中选择的所有咖啡豆类型。
因为该电子邮件表示咖啡订单,所以窗体区域中的已下订单数量递增。
要求
此示例需要以下应用程序:
Visual Studio Tools for Office。
Microsoft Office Outlook 2007。
演示
本示例演示以下概念:
通过在外接程序中实现 Microsoft.Office.Core.IRibbonExtensibility 接口创建功能区自定义项。
通过在外接程序中实现 Microsoft.Office.Core.ICustomTaskPaneConsumer 接口创建自定义任务窗格。
通过在外接程序中实现 Microsoft.Office.Interop.Outlook.FormRegionStartup 接口创建自定义窗体区域。
在 Outlook 中管理和同步不同的电子邮件和任务的功能区自定义项、自定义任务窗格和窗体区域。
UI 管理器组件示例
此示例解决方案包括两个项目:
Microsoft.Samples.Vsto.UiManager 是 Outlook 的外接程序项目。此项目包含可扩展接口的实现以及支持这些实现的其他类和文件。
Microsoft.Samples.Vsto.AddinUtilities 是一个类库,其中包含 Outlook 外接程序项目使用的 UI 管理类和接口。
这些项目提供实现自定义任务窗格、功能区自定义项和窗体区域的组件,以及有助于同步和管理这些功能的组件。
UI 管理组件
下表介绍提供功能区自定义项代码的项目文件。
文件 |
说明 |
---|---|
ThisAddIn.cs/vb |
包含 RequestService 方法的重写以及为每个检查器窗口创建新自定义任务窗格的代码。有关此方法的更多信息,请参见使用扩展性接口自定义 UI 功能。 |
UserInterfaceContainer.cs/vb |
定义 UserInterfaceContainer 类。每个 UserInterfaceContainer 对象都管理一封电子邮件或一项任务的窗体区域、任务窗格和功能区自定义项。 |
UserInterfaceElements.cs/vb |
定义 UserInterfaceElements 类。该类维护外接程序所用的 UserInterfaceContainter 对象的集合。 |
IFormRegionControls.cs/vb IRibbonConnector.cs/vb |
定义 Microsoft.Samples.Vsto.UiManager 和 Microsoft.Samples.Vsto.AddinUtilities 项目中的几个类用来互相通信的接口。 |
自定义任务窗格组件
下表介绍提供自定义任务窗格代码的项目文件。
文件 |
说明 |
---|---|
TaskPaneConnector.cs/vb |
定义 TaskPaneConnector 类。此类实现 Microsoft.Office.Core.ICustomTaskPaneConsumer 接口。 |
SimpleControl.cs/vb |
定义提供自定义任务窗格 UI 的 UserControl。此控件具有向 COM 公开控件的属性。 |
功能区组件
下表介绍提供功能区自定义项代码的项目文件。
文件 |
说明 |
---|---|
RibbonConnector.cs/vb |
定义 RibbonConnector 类。此类实现 Microsoft.Office.Core.IRibbonExtensibility 接口。 |
SimpleRibbon.xml TaskRibbon.xml |
包含由 Microsoft.Office.Core.IRibbonExtensibility 接口实现的 GetCustomUI 方法返回的功能区 XML 字符串。 |
窗体区域组件
下表介绍为任务检查器中显示的自定义窗体区域提供代码的项目文件。
文件 |
说明 |
---|---|
FormRegionConnector.cs/vb |
定义 FormRegionConnector 类。此类实现 Microsoft.Office.Interop.Outlook.FormRegionStartup 接口。 |
FormRegionControls.cs/vb |
定义一个类,该类管理每个窗体区域实例上的控件。 |
PictureConverter.cs/vb |
将 Image 转换为可用于在窗体区域上显示图标的 IPictureDisp。 |
SimpleFormRegion.ofs |
定义窗体区域的 UI。 |
SimpleFormRegion.xml |
包含窗体区域的清单。 |
SimpleFormRegion.reg |
创建加载窗体区域所需的注册表项。 |