Freigeben über


Aktualisieren von Menübandanpassungen, die zu .NET Framework 4.5 migriert wurden

Wenn Ihr Projekt eine Menübandanpassung enthält, die mithilfe des Projektelements "Menüband ( Visual Designer)" erstellt wurde, müssen Sie die folgenden Änderungen am Projektcode vornehmen, wenn das Zielframework in .NET Framework 4 oder höher geändert wird.

  • Ändern Sie den generierten Menübandcode.

  • Ändern Sie code, der Menübandsteuerelemente zur Laufzeit instanziiert, Menübandereignisse behandelt oder die Position einer Menübandkomponente programmgesteuert festlegt.

Aktualisieren des generierten Menübandcodes

Wenn das Zielframework Ihres Projekts in .NET Framework 4 oder höher 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#-Projekten, die Sie in Visual Studio 2012 oder Visual Studio 2010 erstellt haben, führen Sie alle Schritte in der CodeBehind-Datei des Menübands (YourRibbonItem) aus. Designer.cs oder YourRibbonItem. Designer.vb). Um die CodeBehind-Datei in Visual Basic-Projekten anzuzeigen, klicken Sie in Projektmappen-Explorer auf die Schaltfläche "Alle Dateien anzeigen".

  • Führen Sie in Visual C#-Projekten, die Sie in Visual Studio 2008 erstellt und dann auf Visual Studio 2013 aktualisiert haben, die ersten beiden Schritte in der Menübandcodedatei (YourRibbonItem.cs oder YourRibbonItem.vb) aus, und führen Sie die Schritte zum erneuten ausführen Standard ing in der CodeBehind-Datei des Menübands aus.

So ändern Sie den generierten Menübandcode

  1. Ändern Sie die Deklaration der Ribbon-Klasse so, dass sie von 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 Ribbon1()
    {
        InitializeComponent();
    }
    

    Das folgende Codebeispiel zeigt den Standardkonstruktor einer Menübandklasse in einem Projekt, das auf .NET Framework 4 oder höher ausgerichtet ist.

    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.

    Hinweis

    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.

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

    In einem Projekt, das auf .NET Framework 4 oder höher ausgerichtet ist, müssen Sie stattdessen den folgenden Code verwenden.

    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 Click-Ereignis in einem Projekt behandelt, das auf .NET Framework 3.5 abzielt.

    <CodeContentPlaceHolder>8 In einem Projekt, das auf .NET Framework 4 oder höher ausgerichtet ist, müssen Sie stattdessen den folgenden Code verwenden.

    <CodeContentPlaceHolder>9 Eine vollständige Liste der Menübanddelegatten 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. Bei Projekten, die auf .NET Framework 4 oder höher abzielen, handelt es sich bei diesen Steuerelementen um 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 zur Globals-Klasse finden Sie unter "Globaler Zugriff auf Objekte in Office-Projekten".

    Im folgenden Codebeispiel wird veranschaulicht, wie Sie eine RibbonButton in einer Menübandklasse in einem Projekt erstellen, das auf .NET Framework 4 oder höher ausgerichtet ist.

<CodeContentPlaceHolder 10<CodeContentPlaceHolder>>11 In der folgenden Tabelle sind die Steuerelemente aufgeführt, die Sie programmgesteuert erstellen können, und die Methode zum Erstellen der Steuerelemente in Projekten, die auf .NET Framework 4 oder höher abzielen.

Control RibbonFactory-Methode zur Verwendung in .NET Framework 4- und höher-Projekten
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 oder höher abzielen, werden diese Ereignisse jetzt von anderen Delegaten behandelt.

In der folgenden Tabelle sind die Menübandereignisse und die Stellvertretungen aufgeführt, die diesen in Projekten zugeordnet sind, die auf .NET Framework 4 oder höher abzielen.

Ereignis Delegieren, die in .NET Framework 4- und höher-Projekten verwendet werden sollen
LoadImage ereignis in einer generierten Ribbon-Klasse RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

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 oder höher abzielen, müssen Sie mithilfe der RibbonPosition vom RibbonFactory Objekt bereitgestellten Eigenschaft auf diese Methoden zugreifen.

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 zur 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.

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

Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt veranschaulicht, das auf .NET Framework 4 ausgerichtet ist.

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