Aggiornamento delle personalizzazioni della barra multifunzione nei progetti di Office di cui si esegue la migrazione a .NET Framework 4

Se il progetto contiene una personalizzazione della barra multifunzione creata tramite l'elemento del progetto Barra multifunzione (finestra di progettazione visiva), è necessario apportare le modifiche seguenti al codice del progetto se il framework di destinazione viene impostato su .NET Framework 4:

  • Modificare il codice della barra multifunzione generato.

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

Aggiornamento del codice della barra multifunzione generato

Se il framework di destinazione del progetto viene modificato in .NET Framework 4, è necessario modificare il codice generato per l'elemento barra multifunzione effettuando le operazioni indicate di seguito. 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 2010 eseguire tutti i passaggi nel file code-behind della barra multifunzione (ElementoBarraMultifunzione.Designer.cs o ElementoBarraMultifunzione.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 successivamente aggiornati a Visual Studio 2010 eseguire i primi due passaggi nel file di codice della barra multifunzione (ElementoBarraMultifunzione.cs o ElementoBarraMultifunzione.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 Microsoft.Office.Tools.Ribbon.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.

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

    Public Sub New()
        MyBase.New()
        InitializeComponent()
    End Sub
    
    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.

    Public Sub New()
        MyBase.New(Globals.Factory.GetRibbonFactory())
        InitializeComponent()
    End Sub
    
    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. Nel metodo InitializeComponent modificare il codice mediante il quale viene costruito un controllo barra multifunzione affinché il codice utilizzi 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 mediante la quale viene creata un'istanza di un oggetto RibbonButton denominata button1 in un progetto destinato a .NET Framework 3.5.

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

    In un progetto destinato a .NET Framework 4 occorre invece utilizzare il codice seguente.

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

    Per un elenco completo dei metodi di supporto per i controlli barra multifunzione, vedere Creazione di un'istanza dei controlli barra multifunzione.

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

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

    this.button1.Click += new System.EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(
        this.button1_Click);
    

    In un progetto destinato a .NET Framework 4 occorre invece utilizzare il codice seguente.

    this.button1.Click += new Microsoft.Office.Tools.Ribbon.RibbonControlEventHandler(
        this.button1_Click);
    

    Per un elenco completo di delegati della barra multifunzione, vedere Gestione di eventi della barra multifunzione.

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

Creazione di un'istanza dei controlli 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 questi controlli sono interfacce di cui non è possibile creare un'istanza direttamente. È necessario creare i controlli tramite metodi forniti dall'oggetto RibbonFactory.

Sono disponibili due modi per accedere all'oggetto RibbonFactory:

  • Mediante la proprietà Factory della classe Ribbon. Utilizzare questo approccio dal codice della classe Ribbon.

  • Mediante il metodo Globals.Factory.GetRibbonFactory. Utilizzare questo approccio dal codice all'esterno della classe Ribbon. Per ulteriori informazioni sulla classe Globals, vedere Accesso globale a 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.

Dim button As Microsoft.Office.Tools.Ribbon.RibbonButton =
    Me.Factory.CreateRibbonButton()
Microsoft.Office.Tools.Ribbon.RibbonButton button =
    this.Factory.CreateRibbonButton();

Nella tabella seguente sono elencati i controlli creati a livello di codice e il metodo da utilizzare per creare i controlli nei progetti destinati a .NET Framework 4.

Controllo

Metodo RibbonFactory da utilizzare nei progetti .NET Framework 4

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

Gestione di 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 questi eventi sono ora gestiti da altri delegati.

Nella tabella seguente vengono elencati gli eventi della barra multifunzione e i delegati associati nei progetti destinati a .NET Framework 4.

Evento

Delegato da utilizzare nei progetti .NET Framework 4

Evento LoadImage in una classe Ribbon generata

RibbonLoadImageEventHandler

Load

RibbonUIEventHandler

RibbonButton.Click

RibbonCheckBox.Click

RibbonComboBox.ItemsLoading

RibbonComboBox.TextChanged

RibbonDropDown.ButtonClick

RibbonDropDown.ItemsLoading

RibbonDropDown.SelectionChanged

RibbonEditBox.TextChanged

RibbonGallery.ButtonClick

RibbonGallery.Click

RibbonGallery.ItemsLoading

RibbonGroup.DialogLauncherClick

RibbonMenu.ItemsLoading

RibbonSplitButton.Click

RibbonToggleButton.Click

RibbonControlEventHandler

Impostazione della 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 utilizzare 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 è necessario accedere a questi metodi utilizzando la proprietà RibbonPosition fornita dall'oggetto RibbonFactory:

Sono disponibili due modi per accedere all'oggetto RibbonFactory:

  • Mediante la proprietà Factory della classe Ribbon. Utilizzare questo approccio dal codice della classe Ribbon.

  • Mediante il metodo Globals.Factory.GetRibbonFactory. Utilizzare questo approccio dal codice all'esterno della classe Ribbon. Per ulteriori informazioni sulla classe Globals, vedere Accesso globale a oggetti nei progetti di Office.

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

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

Nell'esempio di codice seguente viene illustrata la stessa attività per un progetto destinato a .NET Framework 4.

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

Vedere anche

Concetti

Migrazione di soluzioni Office a .NET Framework 4

Finestra di progettazione della barra multifunzione