Share via


Actualizar las personalizaciones de la cinta de opciones migradas a .NET Framework 4.5

Si el proyecto contiene una personalización de la cinta de opciones que se creó mediante el elemento de proyecto Cinta de opciones (Diseñador visual), debe realizar los siguientes cambios en el código del proyecto si se cambia la plataforma de destino a .NET Framework 4 o posterior.

  • Modifique el código generado de la cinta.

  • Modifique cualquier código que cree instancias de los controles de la cinta de opciones en tiempo de ejecución, controle los eventos de la cinta de opciones o establezca la posición de un componente de la cinta de opciones mediante programación.

Actualización del código de la cinta de opciones generado

Si la plataforma de destino del proyecto se cambia a .NET Framework 4 o posterior, debe cambiar el código generado para el elemento de la cinta de opciones realizando los pasos siguientes. Los archivos de código que debe actualizar dependerán del lenguaje de programación y de cómo haya creado el proyecto:

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

  • En los proyectos de Visual C# que creó en Visual Studio 2008 y, a continuación, actualizó a Visual Studio 2013, realice los dos primeros pasos en el archivo de código de la cinta de opciones (YourRibbonItem.cs o YourRibbonItem.vb) y realice los pasos restantes en el archivo de código subyacente de la cinta de opciones.

Para cambiar el código generado de la cinta

  1. Modifique la declaración de la clase Ribbon para que se derive a partir de RibbonBase en lugar de a partir de Microsoft.Office.Tools.Ribbon.OfficeRibbon.

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

    En el siguiente ejemplo de código se muestra el constructor predeterminado de una clase Ribbon en un proyecto que tiene como destino .NET Framework 3.5.

    public Ribbon1()
    {
        InitializeComponent();
    }
    

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

    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. En el método InitializeComponent, modifique cualquier código que construya un control de la cinta para que el código use en su lugar uno de los métodos del asistente del objeto RibbonFactory.

    Nota:

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

    Por ejemplo, suponga que su archivo contiene la siguiente línea de código que crea una instancia de un RibbonButton denominado button1 en un proyecto que tenga como destino .NET Framework 3.5.

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

    En un proyecto que tenga como destino .NET Framework 4 o posterior, debe usar el código siguiente en su lugar.

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

    Para obtener una lista completa de los métodos auxiliares de los controles de la cinta de opciones, consulte Creación de instancias de controles de la cinta de opciones.

  4. En los 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 use un delegado de la cinta concreto en su lugar.

    Por ejemplo, suponga que su archivo contiene la siguiente línea de código que controla el evento Click en un proyecto que tenga como destino .NET Framework 3.5.

    <CodeContentPlaceHolder>8 En un proyecto destinado a .NET Framework 4 o posterior, debe usar el código siguiente en su lugar.

    <CodeContentPlaceHolder>9 Para obtener una lista completa de los delegados de la cinta de opciones, vea Controlar eventos de la cinta de opciones.

  5. En los proyectos de Visual Basic, busque la clase ThisRibbonCollection al final del archivo. Modifique la declaración de esta clase para que deje de heredar de Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Creación de instancias de controles de la cinta de opciones

Debe modificar todo el código que cree instancias de forma dinámica de controles de la cinta. En proyectos que tengan como destino .NET Framework 3.5, los controles de la cinta son clases de las que se pueden crear instancias directamente en determinados escenarios. En proyectos que tienen como destino .NET Framework 4 o posterior, estos controles son interfaces que no se pueden crear instancias directamente. Debe crear los controles mediante métodos proporcionados por el objeto RibbonFactory.

Hay dos maneras de acceder al objeto RibbonFactory:

  • Mediante la propiedad Factory de la clase Ribbon. Use este enfoque desde el código en la clase Ribbon.

  • Usando el método Globals.Factory.GetRibbonFactory. Use este enfoque desde el código externo a la clase Ribbon. Para obtener más información sobre la clase Globals, vea Acceso global a objetos en proyectos de Office.

    En el ejemplo de código siguiente se muestra cómo crear un RibbonButton en una clase Ribbon en un proyecto que tenga como destino .NET Framework 4 o posterior.

<CodeContentPlaceHolder 10<CodeContentPlaceHolder>>11 La tabla siguiente enumera los controles que puede crear mediante programación y el método que se va a usar para crear los controles en proyectos que tienen como destino .NET Framework 4 o posterior.

Control Método RibbonFactory que se va a usar en .NET Framework 4 y proyectos posteriores
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 eventos de la cinta de opciones

Debe modificar cualquier código que controle los eventos de los controles Ribbon. En los proyectos que tengan como destino la versión .NET Framework 3.5, el delegado de EventHandler<TEventArgs> genérico controla estos eventos. En los proyectos que tienen como destino .NET Framework 4 o posterior, estos eventos ahora se controlan mediante otros delegados.

En la tabla siguiente se enumeran los eventos de la cinta de opciones y los delegados asociados a ellos en proyectos que tienen como destino .NET Framework 4 o posterior.

Evento Delegado para usarlo en proyectos de .NET Framework 4 y versiones posteriores
Evento LoadImage en una clase Ribbon generada RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

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

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

Hay dos maneras de acceder al objeto RibbonFactory:

  • Mediante el uso de la propiedad Factory de la clase Ribbon. Use este enfoque desde el código en la clase Ribbon.

  • Usando el método Globals.Factory.GetRibbonFactory. Use este enfoque desde el código externo a la clase Ribbon. Para obtener más información sobre la clase Globals, vea Acceso global a objetos en proyectos de Office.

    En el siguiente ejemplo de código se muestra cómo establecer la propiedad Position en una clase Ribbon en un proyecto que tenga como destino NET Framework 3.5.

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

En el ejemplo de código siguiente se muestra la misma tarea en un proyecto que tiene como destino .NET Framework 4.

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