.NET Framework 4 に移行する Office プロジェクトのリボンのカスタマイズの更新
リボン (ビジュアルなデザイナー) プロジェクト項目を使用して作成したリボンのカスタマイズを含むプロジェクトのターゲット フレームワークを .NET Framework 4 に変更する場合は、プロジェクト コードに対して次の変更を行う必要があります。
生成されたリボン コードを変更する。
実行時にリボン コントロールをインスタンス化するコード、リボン イベントを処理するコード、またはリボン コンポーネントの位置をプログラムによって設定するコードをすべて変更する。
生成されたリボン コードの更新
プロジェクトのターゲット フレームワークを .NET Framework 4 に変更する場合は、次の手順を実行して、リボン項目に対して生成されたコードを変更する必要があります。 更新する必要があるコード ファイルは、プログラミング言語の種類とプロジェクトの作成方法に応じて次のように異なります。
Visual Studio 2010 で作成した Visual Basic プロジェクトまたは Visual C# プロジェクトの場合は、リボンの分離コード ファイル (YourRibbonItem.Designer.cs または YourRibbonItem.Designer.vb) ですべての手順を実行します。 Visual Basic プロジェクトで分離コード ファイルを確認するには、ソリューション エクスプローラーの [すべてのファイルの表示] をクリックします。
Visual Studio 2008 で作成してから Visual Studio 2010 にアップグレードした Visual C# プロジェクトの場合は、リボンのコード ファイル (YourRibbonItem.cs または YourRibbonItem.vb) で最初の 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 を対象とするプロジェクトのリボン クラスの既定のコンストラクターを次のコード例に示します。
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 を対象とするプロジェクトでは、代わりに次のコードを使用する必要があります。
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 を対象とするプロジェクトでは、代わりに次のコードを使用する必要があります。
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 を対象とするプロジェクトでは、これらのコントロールはインターフェイスであるため、直接インスタンス化できません。 コントロールを作成するには、RibbonFactory オブジェクトが提供するメソッドを使用する必要があります。
RibbonFactory オブジェクトにアクセスするには、次の 2 つの方法があります。
リボン クラスの Factory プロパティの使用。 この方法は、リボン クラス内のコードから使用します。
Globals.Factory.GetRibbonFactory メソッドの使用。 この方法は、リボン クラス外のコードから使用します。 Globals クラスの詳細については、「Office プロジェクト内のオブジェクトへのグローバル アクセス」を参照してください。
次のコード例は、.NET Framework 4 を対象とするプロジェクトのリボン クラスで RibbonButton を作成する方法を示しています。
Dim button As Microsoft.Office.Tools.Ribbon.RibbonButton =
Me.Factory.CreateRibbonButton()
Microsoft.Office.Tools.Ribbon.RibbonButton button =
this.Factory.CreateRibbonButton();
次の表は、プログラムによって作成できるコントロールと、.NET Framework 4 を対象とするプロジェクトでのコントロールの作成に使用するメソッドを示しています。
Control |
.NET Framework 4 プロジェクトで使用する RibbonFactory メソッド |
---|---|
リボン イベントの処理
リボン コントロールのイベントを処理するすべてのコードを変更する必要があります。 .NET Framework 3.5 を対象とするプロジェクトでは、これらのイベントは汎用の EventHandler<TEventArgs> デリゲートによって処理されます。 .NET Framework 4 を対象とするプロジェクトでは、これらのイベントは他のデリゲートによって処理されるようになりました。
次の表は、リボンのイベントと、.NET Framework 4 を対象とするプロジェクトでこれらのイベントに関連付けられているデリゲートを示しています。
イベント |
.NET Framework 4 プロジェクトで使用するデリゲート |
---|---|
生成されたリボン クラスの LoadImage イベント |
|
RibbonDropDown.SelectionChanged |
リボン コンポーネントの位置をプログラムによって設定する
リボンのグループ、タブ、またはコントロールの位置を設定するすべてのコードを変更する必要があります。 .NET Framework 3.5 を対象とするプロジェクトでは、静的な Microsoft.Office.Tools.Ribbon.RibbonPosition クラスの AfterOfficeId メソッドと BeforeOfficeId メソッドを使用して、グループ、タブ、またはコントロールの Position プロパティを割り当てることができます。 .NET Framework 4 を対象とするプロジェクトでは、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");