共用方式為


更新您要移轉至 .NET Framework 4 或 .NET Framework 4.5 之 Office 專案中的功能區自訂

如果專案包含使用 [功能區 (視覺化設計工具)] 專案項目,建立的功能區自訂,您必須對專案進行下列變更,如果目標 Framework 變更為 .NET Framework 4 或 .NET Framework 4.5:

  • 修改產生的功能區程式碼。

  • 修改在執行階段執行個體化功能區控制項、處理功能區事件,或是以程式設計方式設定功能區元件位置的任何程式碼。

更新產生的功能區程式碼

如果您專案的目標 Framework 變更為 .NET Framework 4 或 .NET Framework 4.5,您必須執行下列步驟變更功能區項目產生的程式碼。您需要更新的程式碼檔,是根據程式語言和您建立專案的方式而定:

  • 在 Visual Basic 專案,或在 Visual C# 專案在 Visual Studio 2012 或 Visual Studio 2010 的步驟執行全部會在功能區程式碼後置檔案 (YourRibbonItem的。Designer.cs 或 YourRibbonItem。執行)。若要在 Visual Basic 專案中查看程式碼後置檔案,請按一下 [方案總管] 中的 [顯示所有檔案] 按鈕。

  • 接著將您在 Visual Studio 2008 中建立的 Visual C# 專案升級為 Visual Studio 2012,在功能區程式碼檔 (YourRibbonItem.cs 或 YourRibbonItem.vb) 中執行前兩個步驟,然後在功能區程式碼後置檔案中執行其餘步驟。

變更產生的功能區程式碼

  1. 修改功能區類別的宣告,使其衍生自 Microsoft.Office.Tools.Ribbon.RibbonBase 而不是 Microsoft.Office.Tools.Ribbon.OfficeRibbon

  2. 修改功能區類別的建構函式,如下所示。如果您已將任何自己的程式碼加入至建構函式,請不要變更您的程式碼。在 Visual Basic 專案中,僅修改無參數建構函式。忽略其他建構函式。

    下列程式碼範例會顯示目標為 .NET Framework 3.5 的專案中,功能區類別的預設建構函式。

    Public Sub New()
        MyBase.New()
        InitializeComponent()
    End Sub
    
    public Ribbon1()
    {
        InitializeComponent();
    }
    

    下列程式碼範例示範專案顯示功能區類別的預設建構函式目標 .NET Framework 4 或 .NET Framework 4.5。

    Public Sub New()
        MyBase.New(Globals.Factory.GetRibbonFactory())
        InitializeComponent()
    End Sub
    
    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. 在 InitializeComponent 方法中,修改建構功能區控制項的任何程式碼,讓程式碼改用 RibbonFactory 物件的其中一個 Helper 方法。

    注意事項注意事項

    在 Visual C# 專案中,您必須展開名為 Component Designer generated code 的區域查看 InitializeComponent 方法。

    例如,假設您的檔案包含目標為 .NET Framework 3.5 的專案中,下列執行個體化名為 button1 之 RibbonButton 的程式碼行。

    Me.button1 = New Microsoft.Office.Tools.Ribbon.RibbonButton()
    
    this.button1 = new Microsoft.Office.Tools.Ribbon.RibbonButton();
    

    在專案的目標 .NET Framework 4 或 .NET Framework 4.5,您必須使用下列程式碼。

    Me.button1 = Me.Factory.CreateRibbonButton()
    
    this.button1 = this.Factory.CreateRibbonButton();
    

    如需功能區控制項之 Helper 方法的完整清單,請參閱執行個體化功能區控制項。

  4. 在 Visual C# 專案中,將 InitializeComponent 方法中任何使用 EventHandler<TEventArgs> 委派的程式碼行,修改為使用特定功能區委派。

    例如,假設您的檔案包含下列處理目標為 .NET Framework 3.5 的專案中,RibbonButton.Click 事件的程式碼行。

    this.button1.Click += new System.EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(
        this.button1_Click);
    

    在專案的目標 .NET Framework 4 或 .NET Framework 4.5,您必須使用下列程式碼。

    this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(
        this.button1_Click);
    

    如需功能區委派的完整清單,請參閱處理功能區事件。

  5. 在 Visual Basic 專案中,尋找位於檔案結尾的 ThisRibbonCollection 類別。修改此類別的宣告,使其不再繼承自 Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection

執行個體化功能區控制項

您必須修改動態執行個體化功能區控制項的任何程式碼。在目標為 .NET Framework 3.5 的專案中,功能區控制項是您在特定案例中可以直接執行個體化的類別。在以 .NET Framework 4 或 .NET Framework 4.5的專案中,這些控制項是您無法直接執行個體化的介面。您必須使用 RibbonFactory 物件提供的方法建立控制項。

有兩種方法可以存取 RibbonFactory 物件:

  • 使用功能區類別的 Factory 屬性。請從功能區類別中的程式碼使用此方法。

  • 使用 Globals.Factory.GetRibbonFactory 方法。請從功能區類別外的程式碼使用此方法。如需 Globals 類別的詳細資訊,請參閱 全域存取 Office 專案中的物件

下列程式碼範例示範如何建立可在功能區類別的 RibbonButton 在專案的目標 .NET Framework 4 或 .NET Framework 4.5。

Dim button As Microsoft.Office.Tools.Ribbon.RibbonButton =
    Me.Factory.CreateRibbonButton()
Microsoft.Office.Tools.Ribbon.RibbonButton button =
    this.Factory.CreateRibbonButton();

下表列出您可以程式設計方式建立和使用的方法會在專案中建立控制項以 .NET Framework 4 或 .NET Framework 4.5的控制項。

控制項

使用的 RibbonFactory 方法。 .NET Framework 4 和 .NET Framework 4.5 專案

RibbonButton

CreateRibbonButton

RibbonButtonGroup

CreateRibbonButtonGroup

RibbonCheckBox

CreateRibbonCheckBox

RibbonComboBox

CreateRibbonComboBox

RibbonDialogLauncher

CreateRibbonDialogLauncher

RibbonDropDown:

CreateRibbonDropDown

RibbonDropDownItem

CreateRibbonDropDownItem

RibbonEditBox

CreateRibbonEditBox

RibbonGallery

CreateRibbonGallery

RibbonGroup

CreateRibbonGroup

RibbonLabel

CreateRibbonLabel

RibbonManager

CreateRibbonManager

RibbonMenu

CreateRibbonMenu

RibbonSeparator

CreateRibbonSeparator

RibbonSplitButton

CreateRibbonSplitButton

RibbonTab

CreateRibbonTab

RibbonToggleButton

CreateRibbonToggleButton

處理功能區事件

您必須修改處理功能區控制項事件的任何程式碼。在目標為 .NET Framework 3.5 的專案中,這些事件是由泛型 EventHandler<TEventArgs> 委派處理。在以 .NET Framework 4 或 .NET Framework 4.5的專案中,這些事件是由其他委派現在處理。

下表列出與它們在專案以 .NET Framework 4 或 .NET Framework 4.5的功能區事件和委派。

事件

使用的委派在 .NET Framework 4 和 .NET Framework 4.5 專案

產生的功能區類別中的 LoadImage 事件

RibbonLoadImageEventHandler

Load

RibbonUIEventHandler

RibbonButton.Click

RibbonCheckBox.Click

RibbonComboBox.ItemsLoading

RibbonComboBox.TextChanged

RibbonDropDown.ButtonClick

RibbonDropDown.ItemsLoading

RibbonDropDown.SelectionChanged

RibbonEditBox.TextChanged

RibbonGallery.ButtonClick

RibbonGallery.Click

RibbonGallery.ItemsLoading

RibbonGroup.DialogLauncherClick

RibbonMenu.ItemsLoading

RibbonSplitButton.Click

RibbonToggleButton.Click

RibbonControlEventHandler

以程式設計方式設定功能區元件的位置

您必須修改設定功能區群組、索引標籤或控制項位置的任何程式碼。在目標為 .NET Framework 3.5 的專案中,您可以使用靜態 Microsoft.Office.Tools.Ribbon.RibbonPosition 類別的 AfterOfficeIdBeforeOfficeId 方法,指派群組、索引標籤或控制項的 Position 屬性。在以 .NET Framework 4 或 .NET Framework 4.5的專案,您必須存取這些方法使用 RibbonFactory 物件的 RibbonPosition 屬性。

有兩種方法可以存取 RibbonFactory 物件:

  • 使用功能區類別的 Factory 屬性。請從功能區類別中的程式碼使用此方法。

  • 使用 Globals.Factory.GetRibbonFactory 方法。請從功能區類別外的程式碼使用此方法。如需 Globals 類別的詳細資訊,請參閱 全域存取 Office 專案中的物件

下列程式碼範例示範如何在目標為 .NET Framework 3.5 的專案中,設定功能區類別中索引標籤的 Position 屬性。

Me.tab1.Position = RibbonPosition.AfterOfficeId("TabHome")
this.tab1.Position = RibbonPosition.AfterOfficeId("TabHome");

下列程式碼範例示範在目標為 .NET Framework 4 的專案中執行相同工作。

Me.tab1.Position = Me.Factory.RibbonPosition.AfterOfficeId("TabHome")
this.tab1.Position = this.Factory.RibbonPosition.AfterOfficeId("TabHome");

請參閱

概念

將 Office 方案移轉至 .NET Framework 4 或 .NET Framework 4.5

功能區設計工具