Freigeben über


Aktualisieren der Anpassungen von Menübändern in Office-Projekten, die zu .NET Framework 4 migriert werden

Enthält das Projekt eine Menübandanpassung, die mit dem Menüband (Visueller Designer)-Projektelement erstellt wurde, müssen Sie die folgenden Änderungen am Projektcode vornehmen, wenn das Zielframework in .NET Framework 4 geändert wird:

  • Ändern Sie den generierten Menübandcode.

  • Ändern Sie Code, in dem Menüband-Steuerelemente zur Laufzeit instanziiert werden, Menübandereignisse behandelt werden oder die Position einer Menübandkomponente programmgesteuert festgelegt wird.

Aktualisieren des generierten Menübandcodes

Wenn das Zielframework des Projekts in .NET Framework 4 geändert wird, müssen Sie den generierten Code für das Menübandelement ändern, indem Sie die folgenden Schritte ausführen. Die zu aktualisierenden Codedateien hängen von der Programmiersprache ab und davon, wie Sie das Projekt erstellt haben:

  • Führen Sie in Visual Basic-Projekten oder in Visual C#-Projekten, die Sie in Visual Studio 2010 erstellt haben, alle Schritte in der CodeBehind-Datei für das Menüband aus (YourRibbonItem.Designer.cs oder YourRibbonItem.Designer.vb). Klicken Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen, um die CodeBehind-Datei in Visual Basic-Projekten anzuzeigen.

  • Führen Sie in Visual C#-Projekten, die Sie in Visual Studio 2008 erstellt und dann zu Visual Studio 2010 aktualisiert haben, die ersten zwei Schritte in der Menüband-Codedatei (YourRibbonItem.cs oder YourRibbonItem.vb) aus, und führen Sie die übrigen Schritte in der CodeBehind-Datei für das Menüband aus.

So ändern Sie den generierten Menübandcode

  1. Ändern Sie die Deklaration der Ribbon-Klasse so, dass sie von Microsoft.Office.Tools.Ribbon.RibbonBase statt von Microsoft.Office.Tools.Ribbon.OfficeRibbon abgeleitet wird.

  2. Ändern Sie den Konstruktor der Ribbon-Klasse, wie unten dargestellt. Ändern Sie den Code nicht, wenn Sie dem Konstruktor eigenen Code hinzugefügt haben. Ändern Sie in Visual Basic-Projekten nur den parameterlosen Konstruktor. Ignorieren Sie den anderen Konstruktor.

    Im folgenden Codebeispiel wird der Standardkonstruktor einer Ribbon-Klasse in einem Projekt dargestellt, das auf .NET Framework 3.5 abzielt.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
    End Sub
    
    public Ribbon1()
    {
        InitializeComponent();
    }
    

    Im folgenden Codebeispiel wird der Standardkonstruktor einer Ribbon-Klasse in einem Projekt dargestellt, das auf .NET Framework 4 abzielt.

    Public Sub New()
        MyBase.New(Globals.Factory.GetRibbonFactory())
        InitializeComponent()
    End Sub
    
    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. Ändern Sie in der InitializeComponent-Methode Code, in dem ein Menübandsteuerelement erstellt wird, damit im Code stattdessen eine der Hilfsmethoden des RibbonFactory-Objekts verwendet wird.

    Tipp

    In Visual C#-Projekten müssen Sie den Bereich mit der Bezeichnung Component Designer generated code erweitern, um die InitializeComponent-Methode anzuzeigen.

    Angenommen, die Datei enthält die folgende Codezeile, die eine RibbonButton mit der Bezeichnung button1 in einem Projekt instanziiert, das auf .NET Framework 3.5 abzielt.

    Me.button1 = New Microsoft.Office.Tools.Ribbon.RibbonButton()
    
    this.button1 = new Microsoft.Office.Tools.Ribbon.RibbonButton();
    

    In einem Projekt, das auf .NET Framework 4 abzielt, müssen Sie stattdessen den folgenden Code verwenden.

    Me.button1 = Me.Factory.CreateRibbonButton()
    
    this.button1 = this.Factory.CreateRibbonButton();
    

    Eine vollständige Liste der Hilfsmethoden für die Menübandsteuerelemente finden Sie unter Instanziieren von Menübandsteuerelementen.

  4. Ändern Sie in Visual C#-Projekten jede Codezeile in der InitializeComponent-Methode, die einen EventHandler<TEventArgs>-Delegaten verwendet, um stattdessen einen bestimmten Menübanddelegaten zu verwenden.

    Angenommen, die Datei enthält die folgende Codezeile, die das RibbonButton.Click-Ereignis in einem Projekt behandelt, das auf .NET Framework 3.5 abzielt.

    this.button1.Click += new System.EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(
        this.button1_Click);
    

    In einem Projekt, das auf .NET Framework 4 abzielt, müssen Sie stattdessen den folgenden Code verwenden.

    this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(
        this.button1_Click);
    

    Eine vollständige Liste der Menübanddelegaten finden Sie unter Behandeln von Menübandereignissen.

  5. Suchen Sie in Visual Basic-Projekten die ThisRibbonCollection-Klasse am Ende der Datei. Ändern Sie die Deklaration dieser Klasse, sodass sie nicht mehr von Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection erbt.

Instanziieren von Menübandsteuerelementen

Sie müssen jeden Code ändern, in dem Menübandsteuerelemente dynamisch instanziiert werden. In Projekten, die auf .NET Framework 3.5 abzielen, sind Menübandsteuerelemente Klassen, die Sie in bestimmten Szenarien direkt instanziieren können. In Projekten, die auf .NET Framework 4 abzielen, sind diese Steuerelemente Schnittstellen, die Sie nicht direkt instanziieren können. Sie müssen die Steuerelemente mit Methoden erstellen, die vom RibbonFactory-Objekt bereitgestellt werden.

Es gibt zwei Möglichkeiten, um auf das RibbonFactory-Objekt zuzugreifen:

  • Mithilfe der Factory-Eigenschaft der Ribbon-Klasse. Verwenden Sie diesen Ansatz aus Code in der Ribbon-Klasse.

  • Mithilfe der Globals.Factory.GetRibbonFactory-Methode. Verwenden Sie diesen Ansatz aus Code außerhalb der Ribbon-Klasse. Weitere Informationen über die Globals-Klasse finden Sie unter Globaler Zugriff auf Objekte in Office-Projekten.

Im folgenden Codebeispiel wird dargestellt, wie eine RibbonButton in einer Ribbon-Klasse in einem Projekt erstellt wird, das auf .NET Framework 4 abzielt.

Dim button As Microsoft.Office.Tools.Ribbon.RibbonButton =
    Me.Factory.CreateRibbonButton()
Microsoft.Office.Tools.Ribbon.RibbonButton button =
    this.Factory.CreateRibbonButton();

In der folgenden Tabelle sind die Steuerelemente, die Sie programmgesteuert erstellen können, und die Methode aufgeführt, die zum Erstellen der Steuerelemente in Projekten verwendet werden soll, die auf .NET Framework 4 abzielen.

Steuerelement

In .NET Framework 4-Projekten zu verwendende RibbonFactory-Methode

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

Behandeln von Menübandereignissen

Sie müssen Code ändern, in dem Ereignisse von Menübandsteuerelementen behandelt werden. In Projekten, die auf .NET Framework 3.5 abzielen, werden diese Ereignisse vom generischen EventHandler<TEventArgs>-Delegaten behandelt. In Projekten, die auf .NET Framework 4 abzielen, werden diese Ereignisse jetzt von anderen Delegaten behandelt.

In der folgenden Tabelle sind die Menübandereignisse und die Delegaten aufgeführt, die ihnen in Projekten zugeordnet sind, die auf .NET Framework 4 abzielen.

Ereignis

In .NET Framework 4-Projekten zu verwendender Delegat

LoadImage-Ereignis in einer generierten Ribbon-Klasse

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

Programmgesteuertes Festlegen der Position einer Menübandkomponente

Sie müssen Code ändern, in dem die Position von Menübandgruppen, Registerkarten oder Steuerelementen festgelegt wird. In Projekten, die auf .NET Framework 3.5 abzielen, können Sie mithilfe der AfterOfficeId-Methode und der BeforeOfficeId-Methode der statischen Microsoft.Office.Tools.Ribbon.RibbonPosition-Klasse die Position-Eigenschaft von Gruppen, Registerkarten oder Steuerelementen zuweisen. In Projekten, die auf .NET Framework 4 abzielen, müssen Sie auf diese Methoden mit der RibbonPosition-Eigenschaft zugreifen, die vom RibbonFactory-Objekt bereitgestellt wird.

Es gibt zwei Möglichkeiten, um auf das RibbonFactory-Objekt zuzugreifen:

  • Mithilfe der Factory-Eigenschaft der Ribbon-Klasse. Verwenden Sie diesen Ansatz aus Code in der Ribbon-Klasse.

  • Mithilfe der Globals.Factory.GetRibbonFactory-Methode. Verwenden Sie diesen Ansatz aus Code außerhalb der Ribbon-Klasse. Weitere Informationen über die Globals-Klasse finden Sie unter Globaler Zugriff auf Objekte in Office-Projekten.

Im folgenden Codebeispiel wird dargestellt, wie die Position-Eigenschaft einer Registerkarte in einer Ribbon-Klasse in einem Projekt festgelegt wird, das auf .NET Framework 3.5 abzielt.

Me.tab1.Position = RibbonPosition.AfterOfficeId("TabHome")
this.tab1.Position = RibbonPosition.AfterOfficeId("TabHome");

Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt dargestellt, das auf .NET Framework 4 abzielt.

Me.tab1.Position = Me.Factory.RibbonPosition.AfterOfficeId("TabHome")
this.tab1.Position = this.Factory.RibbonPosition.AfterOfficeId("TabHome");

Siehe auch

Konzepte

Multifunktionsleisten-Designer

Weitere Ressourcen

Migrieren von Office-Lösungen zu .NET Framework 4