.NET Framework 4 または .NET Framework 4.5 に移行する Office プロジェクトのリボンのカスタマイズの更新
プロジェクトの [リボン (ビジュアルなデザイナー)] のプロジェクト項目を使用して作成されたリボンのカスタマイズが含まれている場合は、ターゲット フレームワークを .NET Framework 4 か .NET Framework 4.5に変更する場合は、プロジェクト コードに対して次の変更を加える必要があります:
生成されたリボン コードを変更する。
実行時にリボン コントロールをインスタンス化するコード、リボン イベントを処理するコード、またはリボン コンポーネントの位置をプログラムによって設定するコードをすべて変更する。
生成されたリボン コードの更新
プロジェクトのターゲット フレームワークを .NET Framework 4 か .NET Framework 4.5に変更する場合は、次の手順を実行して、リボン項目に対して生成されたコードを変更する必要があります。更新する必要があるコード ファイルは、プログラミング言語の種類とプロジェクトの作成方法に応じて次のように異なります。
Visual Basic プロジェクトまたは Visual C# で Visual Studio 2012 で作成または Visual Studio 2010 がリボンの分離コード ファイル (YourRibbonItemですべての手順を実行することがあります。Designer.cs か YourRibbonItem。Designer.vb)。Visual Basic プロジェクトで分離コード ファイルを確認するには、ソリューション エクスプローラーの [すべてのファイルの表示] をクリックします。
Visual C# では、Visual Studio 2008 で Visual Studio 2012に、アップグレードして作成し、リボン コード ファイル (.cs または .vb) YourRibbonItemYourRibbonItemの最初の 2 種類のステップを実行しプロジェクト、およびリボンの分離コード ファイルで残りのステップを実行します。
生成されたリボン コードを変更するには
Microsoft.Office.Tools.Ribbon.OfficeRibbon の代わりに Microsoft.Office.Tools.Ribbon.RibbonBase から派生するように、リボン クラスの宣言を変更します。
リボン クラスのコンストラクターを次のように変更します。コンストラクターに独自のコードを追加している場合は、コードを変更しないでください。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(); }
InitializeComponent メソッドでは、代わりに RibbonFactory オブジェクトのいずれかのヘルパー メソッドが使用されるように、リボン コントロールを構築するすべてのコードを変更します。
[!メモ]
Visual C# プロジェクトでは、InitializeComponent メソッドを表示するために Component Designer generated code という名前の領域を展開する必要があります。
たとえば、.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();
リボン コントロールのすべてのヘルパー メソッドの一覧については、「リボン コントロールのインスタンス化」を参照してください。
Visual C# プロジェクトでは、代わりに特定のリボン デリゲートが使用されるように、EventHandler<TEventArgs> デリゲートを使用する InitializeComponent メソッドのコード行を変更します。
たとえば、.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);
すべてのリボン デリゲートの一覧については、「リボン イベントの処理」を参照してください。
Visual Basic プロジェクトでは、ファイルの最後にある ThisRibbonCollection クラスを検索します。このクラスが Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection から継承されないように、クラスの宣言を変更します。
リボン コントロールのインスタンス化
リボン コントロールを動的にインスタンス化するすべてのコードを変更する必要があります。.NET Framework 3.5 を対象とするプロジェクトでは、リボン コントロールは特定のシナリオで直接インスタンス化できるクラスです。.NET Framework 4 か .NET Framework 4.5を対象とするプロジェクトでは、これらのコントロールは、直接インスタンス化できないインターフェイスです。コントロールを作成するには、RibbonFactory オブジェクトが提供するメソッドを使用する必要があります。
RibbonFactory オブジェクトにアクセスするには、次の 2 つの方法があります。
リボン クラスの 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を対象とするプロジェクトでのコントロールの作成に使用するメソッド プログラムで作成できるコントロールの一覧を示します。
Control |
.NET Framework 4 と .NET Framework 4.5 プロジェクトで使用する RibbonFactory メソッド |
---|---|
リボン イベントの処理
リボン コントロールのイベントを処理するすべてのコードを変更する必要があります。.NET Framework 3.5 を対象とするプロジェクトでは、これらのイベントは汎用の EventHandler<TEventArgs> デリゲートによって処理されます。.NET Framework 4 か .NET Framework 4.5を対象とするプロジェクトでは、これらのイベントは他のデリゲートによって処理されるようになりました。
次の表は .NET Framework 4 か .NET Framework 4.5を対象とするプロジェクトでこれらのイベントに関連付けられたデリゲート、リボンのイベントを示します。
Event |
.NET Framework 4 と .NET Framework 4.5 のプロジェクトで使用するデリゲート |
---|---|
生成されたリボン クラスの LoadImage イベント |
|
RibbonDropDown.SelectionChanged |
リボン コンポーネントの位置をプログラムによって設定する
リボンのグループ、タブ、またはコントロールの位置を設定するすべてのコードを変更する必要があります。.NET Framework 3.5 を対象とするプロジェクトでは、静的な Microsoft.Office.Tools.Ribbon.RibbonPosition クラスの AfterOfficeId メソッドと BeforeOfficeId メソッドを使用して、グループ、タブ、またはコントロールの Position プロパティを割り当てることができます。.NET Framework 4 か .NET Framework 4.5を対象とするプロジェクトでは、RibbonFactory のオブジェクトによって提供される RibbonPosition のプロパティを使用して、これらのメソッドにアクセスする必要があります。
RibbonFactory オブジェクトにアクセスするには、次の 2 つの方法があります。
リボン クラスの 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");
参照
概念
.NET Framework 4 または .NET Framework 4.5 への Office ソリューションの移行