功能区概述

功能区是组织相关命令的一种方法,以便更易于查找。 命令在功能区上显示为控件。 控件在应用程序窗口的上边缘沿水平条组织成 。 在选项卡上,相关组进行了整理。

现在可以使用功能区访问Microsoft 办公室系统的早期版本中使用菜单和工具栏访问的大多数功能。 有关详细信息,请参阅 2007 Microsoft 办公室 系统的用户界面的技术文章开发人员概述。

适用于: 本主题中的信息适用于以下应用程序的文档级项目和 VSTO 外接程序项目: Excel;InfoPath 2013 和 InfoPath 2010;前景;幻灯片;项目;Visio;词。 有关详细信息,请参阅办公室应用程序和项目类型提供的功能。

自定义Microsoft 办公室功能区

若要自定义功能区,请将以下功能区项之一添加到办公室项目:

  • 功能区 (可视化设计器)

  • 功能区 (XML)

    例如,若要自定义 Excel 功能区,则将功能区项添加到 Excel VSTO 外接程序项目中。

功能区 (可视化设计器) 项

功能 区(可视化设计器) 项提供了高级工具,使你能够更轻松地设计和开发自定义功能区。 使用以下方式使用功能区(可视化设计器)项自定义功能区:

  • 将自定义或内置选项卡添加到功能区。

  • 将自定义组添加到自定义或内置选项卡。

    注意

    内置选项卡或组是Microsoft 办公室应用程序功能区上已存在的选项卡或组。 例如, “数据 ”选项卡是 Excel 中的内置选项卡。 连接ions 组是“数据”选项卡上的内置组

  • 将自定义控件添加到自定义组。

  • 将自定义控件添加到 Backstage 视图。

    有关如何使用 功能区(可视化设计器) 项自定义功能区的详细信息,请参阅 功能区设计器

功能区 (XML) 项

如果要以功能区(可视化设计器)项不支持的方式自定义功能区,请使用功能区 (XML) 项。 使用以下方式使用功能区(XML)项自定义功能区:

  • 将内置组添加到自定义选项卡或内置选项卡。

  • 将内置控件添加到自定义组。

  • 添加自定义代码,以替代内置控件的事件处理程序。

  • 自定义“快速访问工具栏”。

  • 通过使用限定 ID,在 VSTO 外接程序之间共享功能区自定义项。

    有关如何使用 功能区 (XML) 项自定义功能区的详细信息,请参阅 功能区 XML

将功能区设计器中的功能区导出到功能区 XML

如果使用功能区设计器创建功能区,然后决定要以功能区(可视化设计器)项不支持的方式自定义功能区,则可以将功能区导出到 XML。

Visual Studio 会自动创建 功能区 (XML) 项,并使用功能区上每个控件的元素和属性填充功能区 XML 文件。

功能区设计器的“属性”窗口中的所有属性都不会传输到功能区 XML 文件。 例如,Visual Studio 不导出 ImageText 属性的值。 这是因为你必须在导出项目的功能区代码文件中创建一个回调方法,以分配图像或设置控件的文本。 在导出过程中,Visual Studio 不会自动生成回调方法。

此外,任何未更改的默认属性值都不会出现在生成的功能区 XML 文件中。

有关如何将功能区导出到 XML 的详细信息,请参阅 “如何:将功能区设计器中的功能区导出到功能区 XML”。

更新代码

新的功能区代码文件将添加到解决方案资源管理器。 此文件包含功能区 XML 类。 必须在此类的 Ribbon Callbacks 区域中创建回调方法,以处理用户操作(例如单击某个按钮)。 将你的代码从事件处理程序移动到这些回调方法,并修改此代码以使用功能区扩展性 (RibbonX) 编程模型。 有关更多信息,请参见 Ribbon XML

还必须将代码添加到替代 CreateRibbonExtensibilityObject 方法并将功能区 XML 类返回到 Office 应用程序的 ThisAddInThisWorkbookThisDocument 类。

有关更多信息,请参见 Ribbon XML

向项目添加多个功能区项

可以将多个功能区项添加到单个项目中。 如果想要执行以下两项任务之一,这会非常有用:

  • 为 Outlook 检查器创建功能区。 有关详细信息,请参阅 自定义 Outlook 的功能区。

    注意

    检查器是当用户执行某些任务时(例如,创建一封电子邮件时)打开的窗口。

  • 选择要在运行时显示的功能区。

选择要在运行时显示的功能区

由于项目可以包含多个功能区,因此你可以选择要在运行时显示的功能区。

若要选择要在运行时显示的功能区,请重写CreateRibbonExtensibilityObjectThisAddinThisWorkbook项目中的方法或ThisDocument项目的类,并返回要显示的功能区。 以下示例检查命名myCondition字段的值,并返回相应的功能区。

注意

此示例中使用的语法返回使用 功能区(可视化设计器) 项创建的功能区。 返回使用 功能区 (XML) 项创建的功能区的语法略有不同。 有关返回 功能区 (XML) 项的详细信息,请参阅 功能区 XML

添加以下代码:

    protected override Microsoft.Office.Core.IRibbonExtensibility
CreateRibbonExtensibilityObject()
    {
        if (myCondition == true)
        {
            return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
                new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { new Ribbon1() });
        }
        else
        {
            return Globals.Factory.GetRibbonFactory().CreateRibbonManager(
                new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { new Ribbon2() });
        }
    }
Title 说明
如何:开始自定义功能区 演示如何自定义Microsoft 办公室应用程序的功能区,将功能区(可视化设计器)功能区(XML)项添加到办公室项目。
功能区设计器 介绍如何使用功能区设计器将自定义选项卡、组和控件添加到Microsoft 办公室应用程序的功能区。
演练:使用功能区设计器创建自定义选项卡 显示如何通过使用功能区设计器创建自定义功能区选项卡。 可使用功能区设计器将控件添加和放置到自定义选项卡上。
功能区对象模型概述 概述可用于在运行时获取和设置功能区控件的属性的强类型对象模型。
演练:在运行时更新功能区上的控件 演示如何使用功能区对象模型在功能区加载到 Office 应用程序之后,更新该功能区上的控件。
自定义 Outlook 功能区 提供有关自定义 outlook Microsoft 办公室 功能区的指导。
自定义 InfoPath 的功能区 提供有关在 Microsoft 办公室 InfoPath 中自定义功能区的指导。
在运行时访问功能区 演示如何显示、隐藏和修改功能区,并使用户能够在自定义任务窗格、操作窗格或 Outlook 窗体区域中的控件中运行代码。
如何:更改功能区上选项卡的位置 演示如何更改功能区上的选项卡顺序。
如何:自定义内置选项卡 显示如何将组和控件添加到内置选项卡。
如何:将控件添加到 Backstage 视图 演示如何向单击“文件时打开的菜单添加控件。
如何:向功能区组添加对话框启动器 显示向功能区上的任何组添加对话框启动器。
如何:将功能区设计器中的功能区导出到功能区 XML 演示如何通过将功能区从设计器导出到功能区 XML,以高级方式自定义功能区。
Ribbon XML 说明如何使用功能区 XML 自定义功能区。
演练:使用功能区设计器创建自定义选项卡 演示如何使用 功能区 (XML) 项创建自定义功能区选项卡。