共用方式為


更新移轉至 .NET Framework 4.5 的功能區自定義專案

如果您的專案包含使用 功能區 (Visual Designer) 項目專案建立的功能區自定義,則如果目標架構變更為 .NET Framework 4 或更新版本,則必須對專案程式代碼進行下列變更。

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

  • 修改任何在運行時間具現化功能區控件的程式代碼、處理功能區事件,或以程式設計方式設定功能區元件的位置。

更新產生的功能區程序代碼

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

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

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

變更產生的功能區程式碼

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

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

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

    public Ribbon1()
    {
        InitializeComponent();
    }
    

    下列程式代碼範例顯示以 .NET Framework 4 或更新版本為目標之專案中功能區類別的預設建構函式。

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

    注意

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

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

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

    在以 .NET Framework 4 或更新版本為目標的專案中,您必須改用下列程序代碼。

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

    如需功能區控件協助程式方法的完整清單,請參閱 具現化功能區控件

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

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

    <CodeContentPlaceHolder>8 在以 .NET Framework 4 或更新版本為目標的專案中,您必須改用下列程式代碼。

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

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

具現化功能區控件

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

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

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

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

    下列程式代碼範例示範如何在以 .NET Framework 4 或更新版本為目標的專案中,在功能區類別中建立 RibbonButton

<CodeContentPlaceHolder 10<CodeContentPlaceHolder>>11 下表列出您可以以程序設計方式建立的控件,以及用來在以 .NET Framework 4 或更新版本為目標之專案中建立控件的方法。

控制 在 .NET Framework 4 和更新版本中使用 RibbonFactory 方法
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 或更新版本為目標之專案中與其相關聯的功能區事件和委派。

Event 委派以在 .NET Framework 4 和更新版本中使用
產生的功能區類別中的 LoadImage 事件 RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

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

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

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

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

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

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

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

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

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