更新移轉至 .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),並在功能區程式代碼後置檔案中執行其餘步驟。
變更產生的功能區程式碼
修改功能區類別的宣告,使其衍生自 RibbonBase 而不是
Microsoft.Office.Tools.Ribbon.OfficeRibbon
。修改功能區類別的建構函式,如下所示。 如果您已將任何自己的程式碼加入至建構函式,請不要變更您的程式碼。 在 Visual Basic 專案中,僅修改無參數建構函式, 忽略其他建構函式。
下列程式碼範例顯示在目標為 .NET Framework 3.5 的專案中,功能區類別的預設建構函式。
下列程式代碼範例顯示以 .NET Framework 4 或更新版本為目標之專案中功能區類別的預設建構函式。
在
InitializeComponent
方法中,修改建構功能區控制項的任何程式碼,讓程式碼改用 RibbonFactory 物件的其中一個協助程式方法。注意
在 Visual C# 專案中,您必須展開名為
Component Designer generated code
的區域,以查看InitializeComponent
方法。例如,假設在目標為 .NET Framework 3.5 的專案中,您的檔案包含下列執行個體化名為
button1
之 RibbonButton 的程式碼行。在以 .NET Framework 4 或更新版本為目標的專案中,您必須改用下列程序代碼。
如需功能區控件協助程式方法的完整清單,請參閱 具現化功能區控件。
在 Visual C# 專案中,將
InitializeComponent
方法中任何使用 EventHandler<TEventArgs> 委派的程式碼行,修改為使用特定功能區委派。例如,假設在目標為 .NET Framework 3.5 的專案中,您的檔案包含下列處理 Click 事件的程式碼行。
<CodeContentPlaceHolder>8 在以 .NET Framework 4 或更新版本為目標的專案中,您必須改用下列程式代碼。
<CodeContentPlaceHolder>9 如需功能區委派的完整清單,請參閱 處理功能區事件。
在 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 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
類別的 AfterOfficeId
和 BeforeOfficeId
方法,指派群組、索引標籤或控制項的 Position
屬性。 在以 .NET Framework 4 或更新版本為目標的專案中,您必須使用 RibbonPosition 物件所提供的 RibbonFactory 屬性來存取這些方法。
有兩種方法可以存取 RibbonFactory 物件:
使用功能區類別的
Factory
屬性。 請從功能區類別中的程式碼使用此方法。使用
Globals.Factory.GetRibbonFactory
方法。 請從功能區類別外的程式碼使用此方法。 如需 Globals 類別的詳細資訊,請參閱 Office 專案中物件的全域存取。下列程式碼範例示範如何為目標為 .NET Framework 3.5 的專案,在功能區類別中設定索引標籤的
Position
屬性。
下列程式代碼範例示範以 .NET Framework 4 為目標之專案中的相同工作。