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
Ändern Sie die Deklaration der Ribbon-Klasse so, dass sie von RibbonBase statt von
Microsoft.Office.Tools.Ribbon.OfficeRibbon
abgeleitet wird.Ä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.
Das folgende Codebeispiel zeigt den Standardkonstruktor einer Menübandklasse in einem Projekt, das auf .NET Framework 4 oder höher ausgerichtet ist.
Ä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 dieInitializeComponent
-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.In einem Projekt, das auf .NET Framework 4 oder höher ausgerichtet ist, müssen Sie stattdessen den folgenden Code verwenden.
Eine vollständige Liste der Hilfsmethoden für die Menübandsteuerelemente finden Sie unter Instanziieren von Menübandsteuerelementen.
Ä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.
Suchen Sie in Visual Basic-Projekten die
ThisRibbonCollection
-Klasse am Ende der Datei. Ändern Sie die Deklaration dieser Klasse, sodass sie nicht mehr vonMicrosoft.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.
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.
Im folgenden Codebeispiel wird die gleiche Aufgabe in einem Projekt veranschaulicht, das auf .NET Framework 4 ausgerichtet ist.