Condividi tramite


Aggiornare le personalizzazioni della barra multifunzione migrate a .NET Framework 4.5

Se il progetto contiene una personalizzazione della barra multifunzione creata tramite l'elemento di progetto Ribbon (Visual Designer), è necessario apportare le modifiche seguenti al codice del progetto se il framework di destinazione viene modificato in .NET Framework 4 o versione successiva.

  • Modificare il codice della barra multifunzione generato.

  • Modificare qualsiasi codice che crea un'istanza dei controlli della barra multifunzione in fase di esecuzione, gestisce gli eventi della barra multifunzione o imposta la posizione di un componente della barra multifunzione a livello di codice.

Aggiornare il codice della barra multifunzione generato

Se il framework di destinazione del progetto viene modificato in .NET Framework 4 o versione successiva, è necessario modificare il codice generato per l'elemento della barra multifunzione eseguendo la procedura seguente. I file di codice che è necessario aggiornare dipendono dal linguaggio di programmazione e dalla modalità di creazione del progetto:

  • Nei progetti Visual Basic o nei progetti Visual C# creati in Visual Studio 2012 o Visual Studio 2010 eseguono tutti i passaggi nel file code-behind della barra multifunzione (YourRibbonItem. Designer.cs o YourRibbonItem. Designer.vb). Per visualizzare il file code-behind nei progetti Visual Basic, fare clic sul pulsante Mostra tutti i file in Esplora soluzioni.

  • Nei progetti Visual C# creati in Visual Studio 2008 e quindi aggiornati a Visual Studio 2013, eseguire i primi due passaggi nel file di codice della barra multifunzione (YourRibbonItem.cs o YourRibbonItem.vb) ed eseguire i passaggi rimanenti nel file code-behind della barra multifunzione.

Per modificare il codice della barra multifunzione generato

  1. Modificare la dichiarazione della classe Ribbon in modo che derivi da RibbonBase anziché da Microsoft.Office.Tools.Ribbon.OfficeRibbon.

  2. Modificare il costruttore della classe Ribbon come illustrato di seguito. Se è stato aggiunto codice al costruttore, non modificare il codice. Nei progetti Visual Basic modificare solo il costruttore senza parametri. Ignorare l'altro costruttore.

    L'esempio di codice seguente illustra il costruttore predefinito di una classe Ribbon in un progetto destinato a .NET Framework 3.5

    public Ribbon1()
    {
        InitializeComponent();
    }
    

    Nell'esempio di codice seguente viene illustrato il costruttore predefinito di una classe Ribbon in un progetto destinato a .NET Framework 4 o versione successiva.

    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. Nel metodo InitializeComponent modificare il codice con il quale viene costruito un controllo barra multifunzione in modo che il codice usi invece uno dei metodi di supporto dell'oggetto RibbonFactory.

    Nota

    Nei progetti Visual C# è necessario espandere l'area denominata Component Designer generated code per visualizzare il metodo InitializeComponent.

    Ad esempio, si supponga che il file contenga la riga di codice seguente con la quale viene creata un'istanza di un oggetto RibbonButton denominata button1 in un progetto destinato a .NET Framework 3.5.

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

    In un progetto destinato a .NET Framework 4 o versione successiva, è invece necessario usare il codice seguente.

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

    Per un elenco completo dei metodi helper per i controlli della barra multifunzione, vedere Creare un'istanza dei controlli della barra multifunzione.

  4. Nei progetti Visual C# modificare qualsiasi riga di codice nel metodo InitializeComponent che usa un delegato EventHandler<TEventArgs> per usare invece un delegato specifico della barra multifunzione.

    Ad esempio, si supponga che il file contenga la riga di codice seguente con la quale viene gestito l'evento Click in un progetto destinato a .NET Framework 3.5.

    <CodeContentPlaceHolder>8 In un progetto destinato a .NET Framework 4 o versione successiva, è invece necessario usare il codice seguente.

    <CodeContentPlaceHolder>9 Per un elenco completo dei delegati della barra multifunzione, vedere Gestire gli eventi della barra multifunzione.

  5. Nei progetti Visual Basic trovare la classe ThisRibbonCollection alla fine del file. Modificare la dichiarazione della classe in modo che non erediti più da Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Creare un'istanza dei controlli della barra multifunzione

È necessario modificare il codice che crea dinamicamente un'istanza dei controlli barra multifunzione. Nei progetti destinati a .NET Framework 3.5 i controlli barra multifunzione sono classi per le quali è possibile creare un'istanza direttamente in alcuni scenari. Nei progetti destinati a .NET Framework 4 o versione successiva, questi controlli sono interfacce di cui non è possibile creare direttamente un'istanza. È necessario creare i controlli con i metodi forniti dall'oggetto RibbonFactory.

Sono disponibili due modi per accedere all'oggetto RibbonFactory:

  • Utilizzando la proprietà Factory della classe Ribbon. Usare questo approccio dal codice della classe Ribbon.

  • Usando il metodo Globals.Factory.GetRibbonFactory. Usare questo approccio dal codice all'esterno della classe Ribbon. Per altre informazioni sulla classe Globals, vedere Accesso globale agli oggetti nei progetti di Office.

    Nell'esempio di codice seguente viene illustrato come creare un oggetto RibbonButton in una classe Ribbon in un progetto destinato a .NET Framework 4 o versione successiva.

<CodeContentPlaceHolder>10<CodeContentPlaceHolder>11 La tabella seguente elenca i controlli che è possibile creare a livello di codice e il metodo da usare per creare i controlli nei progetti destinati a .NET Framework 4 o versione successiva.

Controllo Metodo RibbonFactory da usare nei progetti .NET Framework 4 e versioni successive
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

Gestire gli eventi della barra multifunzione

È necessario modificare il codice che gestisce gli eventi dei controlli barra multifunzione. Nei progetti destinati a .NET Framework 3.5 questi eventi sono gestiti dal delegato EventHandler<TEventArgs> generico. Nei progetti destinati a .NET Framework 4 o versione successiva, questi eventi vengono ora gestiti da altri delegati.

La tabella seguente elenca gli eventi della barra multifunzione e i delegati associati nei progetti destinati a .NET Framework 4 o versione successiva.

Evento Delegare l'uso in progetti .NET Framework 4 e versioni successive
Evento LoadImage in una classe Ribbon generata RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

Impostare la posizione di un componente della barra multifunzione a livello di codice

È necessario modificare il codice che imposta la posizione di gruppi, schede o controlli barra multifunzione. Nei progetti destinati a .NET Framework 3.5 è possibile usare i metodi AfterOfficeId e BeforeOfficeId della classe Microsoft.Office.Tools.Ribbon.RibbonPosition statica per assegnare la proprietà Position di un gruppo, una scheda o un controllo. Nei progetti destinati a .NET Framework 4 o versione successiva, è necessario accedere a questi metodi usando la RibbonPosition proprietà fornita dall'oggetto RibbonFactory .

Sono disponibili due modi per accedere all'oggetto RibbonFactory:

  • Usando la proprietà Factory della classe Ribbon. Usare questo approccio dal codice della classe Ribbon.

  • Usando il metodo Globals.Factory.GetRibbonFactory. Usare questo approccio dal codice all'esterno della classe Ribbon. Per altre informazioni sulla classe Globals, vedere Accesso globale agli oggetti nei progetti di Office.

    L'esempio di codice seguente dimostra come impostare la proprietà Position di una scheda in una classe Ribbon in un progetto destinato a .NET Framework 3.5.

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

L'esempio di codice seguente illustra la stessa attività in un progetto destinato a .NET Framework 4.

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