.NET Framework 4.5 に移行されたリボンのカスタマイズを更新する
[リボン (ビジュアル デザイナー)] プロジェクト項目を使用して作成したリボンのカスタマイズを含むプロジェクトのターゲット フレームワークを .NET Framework 4 以降に変更する場合は、プロジェクト コードに対して次の変更を行う必要があります。
生成されたリボン コードを変更する。
実行時にリボン コントロールをインスタンス化するコード、リボン イベントを処理するコード、またはリボン コンポーネントの位置をプログラムによって設定するコードをすべて変更する。
生成されたリボン コードの更新
プロジェクトのターゲット フレームワークを .NET Framework 4 以降に変更する場合は、次の手順を実行して、リボン項目に対して生成されたコードを変更する必要があります。 更新する必要があるコード ファイルは、プログラミング言語の種類とプロジェクトの作成方法に応じて次のように異なります。
Visual Studio 2012 か Visual Studio 2010 のいずれかで作成した Visual Basic プロジェクトまたは Visual C# プロジェクトの場合は、リボンの分離コード ファイル (YourRibbonItem.Designer.cs か YourRibbonItem.Designer.vb) ですべての手順を実行します。 Visual Basic プロジェクトで分離コード ファイルを確認するには、ソリューション エクスプローラーの [すべてのファイルの表示] をクリックします。
Visual Studio 2008 で作成してから Visual Studio 2013 にアップグレードした Visual C# プロジェクトの場合は、リボンのコード ファイル (YourRibbonItem.cs か YourRibbonItem.vb) で最初の 2 つの手順を実行し、リボンの分離コード ファイルで残りの手順を実行します。
生成されたリボン コードを変更するには
RibbonBase の代わりに
Microsoft.Office.Tools.Ribbon.OfficeRibbon
から派生するように、リボン クラスの宣言を変更します。リボン クラスのコンストラクターを次のように変更します。 コンストラクターに独自のコードを追加している場合は、コードを変更しないでください。 Visual Basic プロジェクトでは、パラメーターなしのコンストラクターのみを変更します。 その他のコンストラクターは無視します。
.NET Framework 3.5 を対象とするプロジェクトのリボン クラスの既定のコンストラクターを次のコード例に示します。
.NET Framework 4 以降を対象とするプロジェクトのリボン クラスの既定のコンストラクターを次のコード例に示します。
InitializeComponent
メソッドでは、代わりに RibbonFactory オブジェクトのいずれかのヘルパー メソッドが使用されるように、リボン コントロールを構築するすべてのコードを変更します。Note
Visual C# プロジェクトでは、
Component Designer generated code
メソッドを表示するためにInitializeComponent
という名前の領域を展開する必要があります。たとえば、.NET Framework 3.5 を対象とするプロジェクトで、RibbonButton という名前の
button1
をインスタンス化する次のコード行がファイルに含まれていると仮定します。.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 オブジェクトにアクセスするには、次の 2 つの方法があります。
リボン クラスの 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 を対象とするプロジェクトでは、静的な AfterOfficeId
クラスの BeforeOfficeId
メソッドと Microsoft.Office.Tools.Ribbon.RibbonPosition
メソッドを使用して、グループ、タブ、またはコントロールの Position
プロパティを割り当てることができます。 .NET Framework 4 以降を対象とするプロジェクトでは、RibbonFactory オブジェクトが提供する RibbonPosition プロパティを使って、これらのメソッドにアクセスする必要があります。
RibbonFactory オブジェクトにアクセスするには、次の 2 つの方法があります。
リボン クラスの
Factory
プロパティの使用。 この方法は、リボン クラス内のコードから使用します。Globals.Factory.GetRibbonFactory
メソッドの使用。 この方法は、リボン クラス外のコードから使用します。 Globals クラスの詳細については、「Office プロジェクト内のオブジェクトへのグローバル アクセス」を参照してください。次のコード例は、.NET Framework 3.5 を対象とするプロジェクトでリボン クラスのタブの
Position
プロパティを設定する方法を示しています。
次のコード例は、同じタスクを .NET Framework 4 を対象とするプロジェクトで行う方法を示しています。