Freigeben über


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

Wenn das Projekt eine Menübandanpassung, die erstellt wurde, indem Sie das Menüband (Visueller Designer) Projektelement verwendet, müssen Sie die folgenden Änderungen am Projektcode vornehmen, wenn das Zielframework in .NET Framework 4 oder zu .NET Framework 4.5 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 oder zu .NET Framework 4.5 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:

  • In Visual Basic-Projekten oder in Visual C# projiziert, dass Sie in entweder Visual Studio 2012 erstellt haben, oder Visual Studio 2010 alle Schritte in der CodeBehind-Datei für das Menüband ausführen (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 2012 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 .NET Framework 4 oder .NET Framework 4.5 an.

    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.

    HinweisHinweis

    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 oder .NET Framework 4.5, 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 oder .NET Framework 4.5, 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 .NET Framework 4 oder .NET Framework 4.5 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 veranschaulicht, wie RibbonButton in einer Ribbon-Klasse in einem Projekt dargestellt .NET Framework 4 oder .NET Framework 4.5 erstellt.

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, um die Steuerelemente zu verwendende Methode in Projekten erstellt, die .NET Framework 4 oder .NET Framework 4.5 abzielen.

Steuerelement

In .NET Framework 4 und in .NET Framework 4.5-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 .NET Framework 4 oder .NET Framework 4.5 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 .NET Framework 4 oder .NET Framework 4.5 abzielen.

Ereignis

In .NET Framework 4 und in .NET Framework 4.5-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 .NET Framework 4 oder .NET Framework 4.5 abzielen, müssen Sie auf diese Methoden zugreifen, indem Sie die - Eigenschaft RibbonPosition verwenden, 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

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

Multifunktionsleisten-Designer