次の方法で共有


.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 つの手順を実行し、リボンの分離コード ファイルで残りの手順を実行します。

生成されたリボン コードを変更するには

  1. Microsoft.Office.Tools.Ribbon.OfficeRibbon の代わりに Microsoft.Office.Tools.Ribbon.RibbonBase から派生するように、リボン クラスの宣言を変更します。

  2. リボン クラスのコンストラクターを次のように変更します。 コンストラクターに独自のコードを追加している場合は、コードを変更しないでください。 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();
    }
    
  3. 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();
    

    リボン コントロールのすべてのヘルパー メソッドの一覧については、「リボン コントロールのインスタンス化」を参照してください。

  4. 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);
    

    すべてのリボン デリゲートの一覧については、「リボン イベントの処理」を参照してください。

  5. 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 メソッド

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 を対象とするプロジェクトでこれらのイベントに関連付けられているデリゲートを示しています。

イベント

.NET Framework 4 プロジェクトで使用するデリゲート

生成されたリボン クラスの LoadImage イベント

RibbonLoadImageEventHandler

Load

RibbonUIEventHandler

RibbonButton.Click

RibbonCheckBox.Click

RibbonComboBox.ItemsLoading

RibbonComboBox.TextChanged

RibbonDropDown.ButtonClick

RibbonDropDown.ItemsLoading

RibbonDropDown.SelectionChanged

RibbonEditBox.TextChanged

RibbonGallery.ButtonClick

RibbonGallery.Click

RibbonGallery.ItemsLoading

RibbonGroup.DialogLauncherClick

RibbonMenu.ItemsLoading

RibbonSplitButton.Click

RibbonToggleButton.Click

RibbonControlEventHandler

リボン コンポーネントの位置をプログラムによって設定する

リボンのグループ、タブ、またはコントロールの位置を設定するすべてのコードを変更する必要があります。 .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");

参照

概念

リボン デザイナー

その他の技術情報

.NET Framework 4 への Office ソリューションの移行