演练:使用功能区设计器创建自定义选项卡

更新:2010 年 9 月

此演练演示如何使用功能区设计器创建自定义功能区选项卡。 使用功能区设计器可以在自定义选项卡上添加和放置控件。

**适用于:**本主题中的信息适用于以下应用程序的文档级项目和应用程序级项目:Excel 2007 和 Excel 2010;InfoPath 2010;Outlook 2007 和 Outlook 2010;PowerPoint 2007 和 PowerPoint 2010;Project 2010;Visio 2010;Word 2007 和 Word 2010。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

本演练阐释了以下任务:

  • 创建操作窗格。

  • 创建自定义选项卡。

  • 使用自定义选项卡上的按钮隐藏和显示操作窗格。

提示

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。 您安装的 Visual Studio 版本以及使用的设置决定了这些元素。 有关更多信息,请参见 使用设置

系统必备

您需要以下组件来完成本演练:

-

Visual Studio 2010 的一个版本,其中包含 Microsoft Office 开发工具。有关更多信息,请参见[将计算机配置为开发 Office 解决方案](bb398242\(v=vs.100\).md)。
  • Microsoft Office Excel 2007 或 Excel 2010。 

链接到视频有关本主题的视频版本,请参见 Video How to: Creating a Custom Tab by Using the Ribbon Designer(视频帮助主题:使用功能区设计器创建自定义选项卡)。 有关相关视频演示,请参见 How Do I: Use the Ribbon Designer to Customize the Ribbon in Excel?(如何实现:使用功能区设计器在 Excel 中自定义功能区?)

创建 Excel 工作簿项目

使用功能区设计器的步骤对于所有 Office 应用程序几乎是相同的。 本示例使用一个 Excel 工作簿。

创建 Excel 工作簿项目

  • 创建一个名为“MyExcelRibbon”的 Excel 工作簿项目。 有关更多信息,请参见如何:在 Visual Studio 中创建 Office 项目

    Visual Studio 将在设计器中打开新的工作簿,并将**“我的 Excel 功能区”项目添加到“解决方案资源管理器”**。

创建操作窗格

将两个自定义操作窗格添加到项目。 稍后会将显示和隐藏这些操作窗格的按钮添加到自定义选项卡。

创建操作窗格

  1. 在**“项目”菜单上,单击“添加新项”**。

  2. 在**“添加新项”对话框中,选择“ActionsPaneControl”,然后单击“添加”**。

    将在设计器中打开 ActionsPaneControl1.cs 或 ActionsPaneControl1.vb 文件。

  3. 在**“工具箱”“公共控件”**选项卡中,将一个标签添加到设计器图面。

  4. 在**“属性”窗口中,将 label1 的“Text”**属性设置为“操作窗格 1”。

  5. 重复步骤 1 至 5,再创建一个操作窗格和标签。 将第二个标签的**“Text”**属性设置为“操作窗格 2”。

创建自定义选项卡

Office 应用程序的设计准则之一是:用户应始终能控制 Office 应用程序 UI。 若要为操作窗格添加此功能,可以添加用于从功能区上的自定义选项卡显示和隐藏每个操作窗格的按钮。 若要创建自定义选项卡,请将**“功能区(可视化设计器)”**项添加到项目。 设计器可帮助您添加和放置控件、设置控件属性以及处理控件事件。

创建自定义选项卡

  1. 在**“项目”菜单上,单击“添加新项”**。

  2. 在**“添加新项”对话框中,选择“功能区(可视化设计器)”**。

  3. 将新功能区更名为 MyRibbon,然后单击**“添加”**。

    MyRibbon.cs 或 MyRibbon.vb 文件将在功能区设计器中打开,并显示一个默认选项卡和组。

  4. 在功能区设计器中,单击默认选项卡。

  5. 在**“属性”窗口中,展开“ControlId”属性,然后将“ControlIdType”属性设置为“自定义”**。

  6. 将**“ControlId”**属性设置为“我的自定义选项卡”。

  7. 在功能区设计器中,单击**“group1”**。

  8. 在**“属性”窗口中,将“Label”**设置为“操作窗格管理器”。

  9. 从**“工具箱”“Office 功能区控件”选项卡中,将一个按钮拖到“group1”**上。

  10. 单击**“button1”**将其选中。

  11. 在**“属性”窗口中,将“Label”**设置为“显示操作窗格 1”。

  12. 将另一个按钮添加到**“group1”,并将“Label”**属性设置为“显示操作窗格 2”。

  13. 从**“工具箱”“Office 功能区控件”选项卡中,将“ToggleButton”控件拖到“group1”**上。

  14. 将**“Label”**属性设置为“隐藏操作窗格”。

使用自定义选项卡上的按钮隐藏和显示操作窗格

最后一个步骤是添加对用户进行响应的代码。 为上述两个按钮的 Click 事件和切换按钮的 Click 事件添加事件处理程序。 向这些隐藏和显示操作窗格的事件处理程序添加代码。

使用自定义选项卡中的按钮隐藏和显示操作窗格

  1. 在**“解决方案资源管理器”中,右击 MyRibbon.cs 或 MyRibbon.vb,然后单击“查看代码”**。

  2. 将下面的代码添加到 MyRibbon 类的顶部。 这段代码可以创建两个操作窗格对象。

    Dim actionsPane1 As New ActionsPaneControl1()
    Dim actionsPane2 As New ActionsPaneControl2()
    
    ActionsPaneControl1 actionsPane1 = new ActionsPaneControl1();
    ActionsPaneControl2 actionsPane2 = new ActionsPaneControl2();
    
  3. 将 MyRibbon_Load 方法替换为以下代码。 这段代码会将操作窗格对象添加到 ActionsPane.Controls 集合中,并在视图中这些隐藏对象。 Visual C# 代码还会将委托附加到多个功能区控件事件。

    Private Sub MyRibbon_Load(ByVal sender As System.Object, ByVal e As RibbonUIEventArgs) Handles MyBase.Load
        Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane1)
        Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane2)
        actionsPane1.Hide()
        actionsPane2.Hide()
        Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = False
    End Sub
    
    private void MyRibbon_Load(object sender, RibbonUIEventArgs e)
    {
        Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane1);
        Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane2);
        actionsPane1.Hide();
        actionsPane2.Hide();
        Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = false;
    
        // Use the following code in projects that target the .NET Framework 4.
        this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(
            this.button1_Click);
        this.button2.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(
            this.button2_Click);
        this.toggleButton1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(
            this.toggleButton1_Click);
    
        // For .NET Framework 3.5 projects, use the following code instead.
        // this.button1.Click += new EventHandler<RibbonControlEventArgs>(button1_Click);
        // this.button2.Click += new EventHandler<RibbonControlEventArgs>(button2_Click);
        // this.toggleButton1.Click += new EventHandler<RibbonControlEventArgs>(toggleButton1_Click);
    }
    

    有关面向 .NET Framework 4 和 .NET Framework 3.5 的项目的 Visual C# 代码示例有何区别的更多信息,请参见更新迁移到 .NET Framework 4 的 Office 项目中的功能区自定义项

  4. 将以下三个事件处理程序方法添加到 MyRibbon 类。 这些方法处理上述两个按钮 Click 事件和切换按钮的 Click 事件。 button1 和 button2 的事件处理程序显示两个交替出现的操作窗格。 toggleButton1 的事件处理程序显示和隐藏活动操作窗格。

    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles Button1.Click
        Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = True
        actionsPane2.Hide()
        actionsPane1.Show()
        ToggleButton1.Checked = False
    End Sub
    
    Private Sub Button2_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles Button2.Click
    
        Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = True
        actionsPane1.Hide()
        actionsPane2.Show()
        ToggleButton1.Checked = False
    
    End Sub
    
    
    Private Sub ToggleButton1_Click(ByVal sender As System.Object, _
        ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) _
            Handles ToggleButton1.Click
    
        If ToggleButton1.Checked Then
            Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = False
        Else
            Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = True
        End If
    
    End Sub
    
    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = true;
        actionsPane2.Hide();
        actionsPane1.Show();
        ToggleButton1.Checked = false;
    }
    
    private void button2_Click(object sender, RibbonControlEventArgs e)
    {
        Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = true;
        actionsPane1.Hide();
        actionsPane2.Show();
        ToggleButton1.Checked = false;
    
    }
    
    private void toggleButton1_Click(object sender, RibbonControlEventArgs e)
    {
        if (toggleButton1.Checked == true)
        {
            Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = false;
        }
        else
        {
            Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = true;
        }
    
    }
    

测试自定义选项卡

运行项目时,Excel 即会启动。此时**“我的自定义选项卡”选项卡会显示在功能区中。 单击“我的自定义选项卡”**选项卡上的按钮以显示或隐藏操作窗格。

测试自定义选项卡

  1. 按 F5 运行项目。

  2. 单击**“我的自定义选项卡”**选项卡。

  3. 在**“自定义操作窗格管理器”组中,单击“显示操作窗格 1”**。

    操作窗格将出现,并显示标签“操作窗格 1”。

  4. 单击**“显示操作窗格 2”**。

    操作窗格将出现,并显示标签“操作窗格 2”。

  5. 单击**“隐藏操作窗格”**。

    操作窗格不再可见。

后续步骤

可从以下主题了解有关如何自定义 Office 用户界面的更多信息:

请参见

任务

如何:开始自定义功能区

如何:更改功能区上选项卡的位置

如何:自定义内置选项卡

如何:自定义 Microsoft Office 菜单

概念

在运行时访问功能区

功能区设计器

自定义 Outlook 功能区

功能区对象模型概述

其他资源

功能区概述

修订记录

日期

修订记录

原因

2010 年 9 月

增加了 .NET Framework 3.5 代码示例。

内容 Bug 修复

2010 年 9 月

增加了确保此演练生成自定义选项卡的步骤。 在此更改之前,控件仅显示在“外接程序”选项卡中。

内容 Bug 修复