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
Ä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.
Ä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(); }
Ä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.
Ä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.
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 |
---|---|
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 |
|
RibbonDropDown.SelectionChanged |
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