Mettre à jour les personnalisations du ruban migrées vers .NET Framework 4.5

Si votre projet contient une personnalisation du ruban créée à l’aide de l’élément de projet Ruban (Concepteur visuel), vous devez apporter les modifications suivantes au code de votre projet si le framework cible est remplacé par .NET Framework 4 ou version ultérieure.

  • Modifiez le code de ruban généré.

  • Modifiez tout code qui instancie les contrôles du ruban au moment de l’exécution, gère les événements du ruban ou définit la position d’un composant du ruban par programmation.

Mettre à jour le code du ruban généré

Si le framework cible de votre projet est remplacé par .NET Framework 4 ou version ultérieure, vous devez modifier le code généré pour l’élément du ruban en effectuant les étapes suivantes. Vous devez mettre à jour les fichiers de code en fonction du langage de programmation utilisé et de la façon dont vous avez créé le projet :

  • Dans les projets Visual Basic ou dans les projets Visual C# que vous avez créés dans Visual Studio 2012 ou Visual Studio 2010, effectuez toutes les étapes du fichier code-behind du ruban (YourRibbonItem). Designer.cs ou YourRibbonItem. Designer.vb). Pour afficher le fichier code-behind dans les projets Visual Basic, cliquez sur le bouton Afficher tous les fichiers dans Explorateur de solutions.

  • Dans les projets Visual C# que vous avez créés dans Visual Studio 2008, puis mis à niveau vers Visual Studio 2013, effectuez les deux premières étapes du fichier de code du ruban (YourRibbonItem.cs ou YourRibbonItem.vb), puis effectuez les étapes restantes dans le fichier code-behind du ruban.

Pour changer le code de ruban généré

  1. Modifiez la déclaration de la classe Ribbon pour qu'elle dérive de RibbonBase au lieu de Microsoft.Office.Tools.Ribbon.OfficeRibbon.

  2. Modifiez le constructeur de la classe Ribbon, comme indiqué ci-dessous. Si vous avez ajouté votre propre code au constructeur, ne modifiez pas votre code. Dans les projets Visual Basic, modifiez uniquement le constructeur sans paramètre. Ignorez l'autre constructeur.

    L'exemple de code suivant montre le constructeur par défaut d'une classe Ribbon dans un projet qui cible .NET Framework 3.5.

    public Ribbon1()
    {
        InitializeComponent();
    }
    

    L’exemple de code suivant montre le constructeur par défaut d’une classe Ribbon dans un projet qui cible le .NET Framework 4 ou une version ultérieure.

    public Ribbon1()
        : base(Globals.Factory.GetRibbonFactory())
    {
        InitializeComponent();
    }
    
  3. Dans la méthode InitializeComponent, modifiez tout code qui construit un contrôle de ruban pour que le code utilise à la place l'une des méthodes d'assistance de l'objet RibbonFactory.

    Remarque

    Dans les projets Visual C#, vous devez développer la zone nommée Component Designer generated code pour voir la méthode InitializeComponent.

    Par exemple, supposons que votre fichier contienne la ligne de code suivante qui instancie un RibbonButton nommé button1 dans un projet qui cible .NET Framework 3.5.

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

    Dans un projet qui cible .NET Framework 4 ou version ultérieure, vous devez utiliser le code suivant à la place.

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

    Pour obtenir la liste complète des méthodes d’assistance pour les contrôles du ruban, consultez Instancier les contrôles du ruban.

  4. Dans les projets Visual C#, modifiez les lignes de code de la méthode InitializeComponent qui utilisent un délégué EventHandler<TEventArgs> pour utiliser un délégué de ruban spécifique à la place.

    Par exemple, supposons que votre fichier contienne la ligne de code suivante qui gère l'événement Click dans un projet qui cible .NET Framework 3.5.

    <CodeContentPlaceHolder>8 Dans un projet qui cible .NET Framework 4 ou version ultérieure, vous devez utiliser le code suivant à la place.

    <CodeContentPlaceHolder>9 Pour obtenir la liste complète des délégués du ruban, consultez Gérer les événements du ruban.

  5. Dans les projets Visual Basic, localisez la classe ThisRibbonCollection à la fin du fichier. Modifiez la déclaration de cette classe pour qu'elle n'hérite plus de Microsoft.Office.Tools.Ribbon.RibbonReadOnlyCollection.

Instancier des contrôles du ruban

Vous devez modifier tout code qui instancie dynamiquement des contrôles de ruban. Dans les projets qui ciblent .NET Framework 3.5, les contrôles de ruban sont des classes que vous pouvez instancier directement dans certains scénarios. Dans les projets qui ciblent .NET Framework 4 ou version ultérieure, ces contrôles sont des interfaces que vous ne pouvez pas instancier directement. Vous devez créer les contrôles à l'aide des méthodes fournies par l'objet RibbonFactory.

Il existe deux façons d'accéder à l'objet RibbonFactory :

  • À l’aide de la propriété Factory de la classe Ribbon. Utilisez cette approche basée sur le code dans votre classe Ribbon.

  • À l'aide de la méthode Globals.Factory.GetRibbonFactory. Utilisez cette approche basée sur le code hors de votre classe Ribbon. Pour plus d’informations sur la classe Globals, consultez Accès global aux objets dans Bureau projets.

    L’exemple de code suivant montre comment créer une RibbonButton classe de ruban dans un projet qui cible .NET Framework 4 ou version ultérieure.

<CodeContentPlaceHolder>10<CodeContentPlaceHolder>11 Le tableau suivant répertorie les contrôles que vous pouvez créer par programmation et la méthode à utiliser pour créer les contrôles dans les projets qui ciblent .NET Framework 4 ou version ultérieure.

Control Méthode RibbonFactory à utiliser dans les projets .NET Framework 4 et ultérieur
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

Gérer les événements du ruban

Vous devez modifier tout code qui gère les événements liés aux contrôles de ruban. Dans les projets qui ciblent .NET Framework 3.5, ces événements sont gérés par le délégué EventHandler<TEventArgs> générique. Dans les projets qui ciblent .NET Framework 4 ou version ultérieure, ces événements sont désormais gérés par d’autres délégués.

Le tableau suivant répertorie les événements du ruban et les délégués associés aux projets qui ciblent .NET Framework 4 ou version ultérieure.

Event Déléguer à utiliser dans .NET Framework 4 et les projets ultérieurs
Événement LoadImage dans une classe Ribbon générée RibbonLoadImageEventHandler
Load RibbonUIEventHandler
Click

Click

ItemsLoading

TextChanged

ButtonClick

ItemsLoading

SelectionChanged

TextChanged

ButtonClick

Click

ItemsLoading

DialogLauncherClick

ItemsLoading

Click

Click
RibbonControlEventHandler

Définir la position d’un composant ruban par programmation

Vous devez modifier tout code qui définit la position des groupes, onglets ou contrôles de ruban. Dans les projets qui ciblent .NET Framework 3.5, vous pouvez utiliser les méthodes AfterOfficeId et BeforeOfficeId de la classe Microsoft.Office.Tools.Ribbon.RibbonPosition statique pour assigner la propriété Position d'un groupe, d'un onglet ou d'un contrôle. Dans les projets qui ciblent .NET Framework 4 ou version ultérieure, vous devez accéder à ces méthodes à l’aide de la RibbonPosition propriété fournie par l’objet RibbonFactory .

Il existe deux façons d'accéder à l'objet RibbonFactory :

  • À l'aide de la propriété Factory de la classe Ribbon. Utilisez cette approche basée sur le code dans votre classe Ribbon.

  • À l'aide de la méthode Globals.Factory.GetRibbonFactory. Utilisez cette approche basée sur le code hors de votre classe Ribbon. Pour plus d’informations sur la classe Globals, consultez Accès global aux objets dans Bureau projets.

    L'exemple de code suivant montre comment définir la propriété Position d'un onglet dans une classe Ribbon, au sein d'un projet qui cible .NET Framework 3.5.

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

L’exemple de code suivant illustre la même tâche dans un projet qui cible le .NET Framework 4.

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