Compartir a través de


Actualizar las personalizaciones de la Cinta en los proyectos de Office migrados a .NET Framework 4

Si un proyecto contiene una personalización de la cinta que se creó mediante el elemento de proyecto Cinta (diseñador visual), deberá realizar los siguientes cambios en el código del proyecto si la versión de .NET Framework de destino pasa a ser .NET Framework 4:

  • Modifique el código de cinta generado.

  • Modifique cualquier código que cree instancias del control Ribbon en tiempo de ejecución, administre los eventos de Ribbon o establezca la posición de un componente de Ribbon mediante programación.

Actualizar el código de cinta generado

Si la versión de .NET Framework de destino del proyecto pasa a ser .NET Framework 4, deberá cambiar el código generado para el elemento Cinta siguiendo estos pasos. Los archivos de código que necesite actualizar dependen del lenguaje de programación y de la forma en que se creó el proyecto:

  • En proyectos de Visual Basic o en proyectos de Visual C# creados en Visual Studio 2010, siga todos los pasos en el archivo de código subyacente de la cinta (suElementoDeCinta.Designer.cs o suElementoDeCinta.Designer.vb). Para ver el archivo de código subyacente en los proyectos de Visual Basic, haga clic en el botón Mostrar todos los archivos en el Explorador de soluciones.

  • En proyectos de Visual C# creados en Visual Studio 2008 y actualizados a Visual Studio 2010, siga los dos primeros pasos en el archivo de código de la cinta (suElementoDeCinta.cs o suElementoDeCinta.vb) y siga los pasos restantes en el archivo de código subyacente de la cinta.

Para cambiar el código de cinta generado

  1. Modifique la declaración de la clase Ribbon de modo que derive de Microsoft.Office.Tools.Ribbon.RibbonBase en lugar de Microsoft.Office.Tools.Ribbon.OfficeRibbon.

  2. Modifique el constructor de la clase Ribbon tal y como se muestra a continuación. Si ha agregado código propio al constructor, no lo cambie. En proyectos de Visual Basic, modifique únicamente el constructor sin parámetros. Omita el otro constructor.

    En el siguiente ejemplo de código, se muestra el constructor predeterminado de una clase Ribbon en un proyecto destinado a .NET Framework 3.5.

    Public Sub New()
        MyBase.New()
        InitializeComponent()
    End Sub
    
    public Ribbon1()
    {
        InitializeComponent();
    }
    

    En el siguiente ejemplo de código, se muestra el constructor predeterminado de una clase Ribbon en un proyecto destinado a .NET Framework 4.

    Public Sub New()
        MyBase.New(Globals.Factory.GetRibbonFactory())
        InitializeComponent()
    End Sub
    
    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. En el método InitializeComponent, modifique cualquier código que construya un control Ribbon para que utilice uno de los métodos auxiliares del objeto RibbonFactory.

    Nota

    En proyectos de Visual C#, debe expandir el área denominada Component Designer generated code para ver el método InitializeComponent.

    Por ejemplo, supongamos que el archivo contiene la siguiente línea de código que crea una instancia de RibbonButton denominada button1 en un proyecto destinado a .NET Framework 3.5.

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

    En un proyecto destinado a .NET Framework 4, debe utilizar el siguiente código.

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

    Para obtener una lista completa de los métodos auxiliares para los controles Ribbon, vea Crear instancias de controles Ribbon.

  4. En proyectos de Visual C#, modifique cualquier línea de código en el método InitializeComponent que use un delegado de EventHandler<TEventArgs> para que utilice un delegado de Ribbon concreto.

    Por ejemplo, supongamos que el archivo contiene la siguiente línea de código que administra el evento RibbonButton.Click en un proyecto destinado a .NET Framework 3.5.

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

    En un proyecto destinado a .NET Framework 4, debe utilizar el siguiente código.

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

    Para obtener una lista completa de los delegados de Ribbon, Controlar los eventos de Ribbon.

  5. En proyectos de Visual Basic, busque la clase ThisRibbonCollection al final del archivo. Modifique la declaración de esta clase de modo que ya no herede de Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Crear instancias de controles Ribbon

Debe modificar cualquier código que cree dinámicamente instancias de los controles Ribbon. En proyectos destinados a .NET Framework 3.5, los controles Ribbon son clases de las que se pueden crear instancias directamente en determinados escenarios. En proyectos destinados a .NET Framework 4, estos controles son interfaces de las que no se pueden crear instancias directamente. Debe crear los controles mediante métodos proporcionados por el objeto RibbonFactory.

Existen dos maneras de obtener acceso al objeto RibbonFactory:

  • Mediante la propiedad Factory de la clase Ribbon. Utilice este enfoque para código en la clase Ribbon.

  • Mediante el método Globals.Factory.GetRibbonFactory. Utilice este enfoque para código fuera de la clase Ribbon. Para obtener más información sobre la clase Globals, vea Acceso global a objetos en los proyectos de Office.

En el siguiente ejemplo de código, se muestra cómo crear un control RibbonButton en una clase Ribbon de un proyecto destinado a .NET Framework 4.

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

En la siguiente tabla figuran los controles que se pueden crear mediante programación y el método que se debe usar para crear los controles en proyectos destinados a .NET Framework 4.

Control

Método de RibbonFactory que se va a usar en proyectos destinados a .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

Controlar los eventos de Ribbon

Debe modificar cualquier código que controle los eventos de los controles Ribbon. En proyectos destinados a .NET Framework 3.5, estos eventos los controla el delegado genérico EventHandler<TEventArgs>. En proyectos destinados a .NET Framework 4, son otros delegados los que controlan ahora estos eventos.

En la siguiente tabla figuran los eventos de Ribbon y los delegados asociados en proyectos destinados a .NET Framework 4.

Evento

Delegado que se va a usar en proyectos destinados a .NET Framework 4

Evento LoadImage de una clase Ribbon generada

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

Establecer la posición de un componente de Ribbon mediante programación

Debe modificar cualquier código que establezca la posición de los grupos, pestañas o controles de Ribbon. En proyectos destinados a .NET Framework 3.5, puede utilizar los métodos BeforeOfficeId y AfterOfficeId de la clase Microsoft.Office.Tools.Ribbon.RibbonPosition estática para asignar la propiedad Position de un grupo, una pestaña o un control. En proyectos destinados a .NET Framework 4, debe obtener acceso a estos métodos mediante la propiedad RibbonPosition proporcionada por el objeto RibbonFactory.

Existen dos maneras de obtener acceso al objeto RibbonFactory:

  • Mediante la propiedad Factory de la clase Ribbon. Utilice este enfoque para código en la clase Ribbon.

  • Mediante el método Globals.Factory.GetRibbonFactory. Utilice este enfoque para código fuera de la clase Ribbon. Para obtener más información sobre la clase Globals, vea Acceso global a objetos en los proyectos de Office.

En el siguiente ejemplo de código, se muestra cómo establecer la propiedad Position de una pestaña de una clase Ribbon en un proyecto destinado a .NET Framework 3.5.

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

En el siguiente ejemplo de código, se muestra la misma tarea en un proyecto destinado a .NET Framework 4.

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

Vea también

Conceptos

Migrar soluciones de Office a .NET Framework 4

Diseñador de la cinta de opciones