Dela via


Uppdatera menyfliksområdets anpassningar som migrerats till .NET Framework 4.5

Om projektet innehåller en menyfliksanpassning som skapades med hjälp av projektobjektet Menyfliksområde (Visual Designer) måste du göra följande ändringar i projektkoden om målramverket ändras till .NET Framework 4 eller senare.

  • Ändra den genererade bandkoden.

  • Ändra all kod som instansierar bandkontroller vid körning, hanterar händelser i menyfliksområdet eller anger positionen för en menyflikskomponent programmatiskt.

Uppdatera den genererade bandkoden

Om målramverket för projektet ändras till .NET Framework 4 eller senare måste du ändra den genererade koden för menyfliksobjektet genom att utföra följande steg. Vilka kodfiler du behöver uppdatera beror på programmeringsspråket och hur du skapade projektet:

  • I Visual Basic-projekt eller i Visual C#-projekt som du skapade i antingen Visual Studio 2012 eller Visual Studio 2010 utför du alla steg i bandkodsfilen (YourRibbonItem. Designer.cs eller YourRibbonItem. Designer.vb). Om du vill se filen bakom koden i Visual Basic-projekt klickar du på knappen Visa alla filer i Solution Explorer.

  • I Visual C#-projekt som du skapade i Visual Studio 2008 och sedan uppgraderade till Visual Studio 2013 utför du de två första stegen i bandkodsfilen (YourRibbonItem.cs eller YourRibbonItem.vb) och utför de återstående stegen i bandkod bakom filen.

Så här ändrar du den genererade bandkoden

  1. Ändra deklarationen för klassen Ribbon så att den härleds från RibbonBase i stället för Microsoft.Office.Tools.Ribbon.OfficeRibbon.

  2. Ändra konstruktorn för klassen Ribbon enligt nedan. Om du har lagt till någon egen kod i konstruktorn ändrar du inte koden. I Visual Basic-projekt ändrar du endast den parameterlösa konstruktorn. Ignorera den andra konstruktorn.

    I följande kodexempel visas standardkonstruktorn för en bandklass i ett projekt som är avsett för .NET Framework 3.5.

    public Ribbon1()
    {
        InitializeComponent();
    }
    

    I följande kodexempel visas standardkonstruktorn för en bandklass i ett projekt som riktar sig mot .NET Framework 4 eller senare.

    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. InitializeComponent I -metoden ändrar du all kod som konstruerar en menyflikskontroll så att koden i stället använder någon av hjälpmetoderna för RibbonFactory objektet.

    Anmärkning

    I Visual C#-projekt måste du expandera den region som heter Component Designer generated code för att se InitializeComponent metoden.

    Anta till exempel att filen innehåller följande kodrad som instansierar ett RibbonButton namngivet button1 i ett projekt som riktar sig till .NET Framework 3.5.

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

    I ett projekt som riktar sig mot .NET Framework 4 eller senare måste du använda följande kod i stället.

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

    En fullständig lista över hjälpmetoderna för kontrollerna i menyfliksområdet finns i Instansiera kontroller i menyfliksområdet.

  4. I Visual C#-projekt ändrar du valfri kodrad i metoden InitializeComponent som använder ett EventHandler<TEventArgs> ombud för att använda ett specifikt menyfliksområdesdelegat i stället.

    Anta till exempel att filen innehåller följande kodrad som hanterar Click händelsen i ett projekt som riktar sig mot .NET Framework 3.5.

    <CodeContentPlaceHolder>8 I ett projekt som riktar sig mot .NET Framework 4 eller senare måste du använda följande kod i stället.

    <CodeContentPlaceHolder>9 En fullständig lista över ombuden i menyfliksområdet finns i Hantera händelser i menyfliksområdet.

  5. Leta upp ThisRibbonCollection klassen i slutet av filen i Visual Basic-projekt. Ändra deklarationen för den här klassen så att den inte längre ärver från Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Instansiera kontroller i menyfliksområdet

Du måste ändra all kod som dynamiskt instansierar kontroller i menyfliksområdet. I projekt som riktar sig mot .NET Framework 3.5 är menyflikskontroller klasser som du kan instansiera direkt i vissa scenarier. I projekt som riktar sig mot .NET Framework 4 eller senare är dessa kontroller gränssnitt som du inte kan instansiera direkt. Du måste skapa kontrollerna med hjälp av metoder som tillhandahålls av RibbonFactory objektet.

Det finns två sätt att komma åt objektet RibbonFactory :

  • Genom att använda egenskapen Factory för klassen Ribbon. Använd den här metoden från kod i klassen Menyfliksområde.

  • Med hjälp Globals.Factory.GetRibbonFactory av metoden . Använd den här metoden från kod utanför klassen Menyfliksområde. Mer information om klassen Globals finns i Global åtkomst till objekt i Office-projekt.

    Följande kodexempel visar hur du skapar en RibbonButton i en bandklass i ett projekt som riktar sig till .NET Framework 4 eller senare.

<CodeContentPlaceHolder>10 <CodeContentPlaceHolder>11 I följande tabell visas de kontroller som du kan skapa programmatiskt och den metod som ska användas för att skapa kontrollerna i projekt som riktar sig mot .NET Framework 4 eller senare.

Kontroll RibbonFactory-metod som ska användas i .NET Framework 4- och senare projekt
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

Hantera händelser i menyfliksområdet

Du måste ändra all kod som hanterar händelser i menyfliksområdets kontroller. I projekt som riktar sig mot .NET Framework 3.5 hanteras dessa händelser av det allmänna EventHandler<TEventArgs> ombudet. I projekt som riktar sig mot .NET Framework 4 eller senare hanteras dessa händelser nu av andra ombud.

I följande tabell visas händelser i menyfliksområdet och de ombud som är associerade med dem i projekt som riktar sig mot .NET Framework 4 eller senare.

Evenemang Delegera att använda i .NET Framework 4- och senare projekt
LoadImage händelse i en genererad bandklass RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

Ange positionen för en menyflikskomponent programmatiskt

Du måste ändra valfri kod som anger positionen för menyfliksgrupper, flikar eller kontroller. I projekt som riktar sig mot .NET Framework 3.5 kan du använda AfterOfficeId metoderna och BeforeOfficeId för den statiska Microsoft.Office.Tools.Ribbon.RibbonPosition klassen för att tilldela Position egenskapen för en grupp, flik eller kontroll. I projekt som riktar sig mot .NET Framework 4 eller senare måste du komma åt dessa metoder med hjälp av egenskapen RibbonPosition som tillhandahålls av RibbonFactory objektet.

Det finns två sätt att komma åt objektet RibbonFactory :

  • Genom att Factory använda egenskapen för klassen Ribbon. Använd den här metoden från kod i klassen Menyfliksområde.

  • Med hjälp Globals.Factory.GetRibbonFactory av metoden . Använd den här metoden från kod utanför klassen Menyfliksområde. Mer information om klassen Globals finns i Global åtkomst till objekt i Office-projekt.

    I följande kodexempel visas hur du anger Position egenskapen för en flik i en bandklass i ett projekt som riktar sig till .NET Framework 3.5.

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

I följande kodexempel visas samma uppgift i ett projekt som riktar sig mot .NET Framework 4.

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