Partager via


Procédure pas à pas : création de menus contextuels pour les signets

Cette procédure pas à pas montre comment créer des menus contextuels pour les contrôles Bookmark dans une personnalisation au niveau du document pour Word.Lorsqu'un utilisateur clique avec le bouton droit sur le texte d'un signet, un menu contextuel proposant des options de mise en forme apparaît.

S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document pour Word 2013 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.

Cette procédure pas à pas décrit les tâches suivantes :

  • Création du projet.

  • Ajout de texte et de signets au document.

  • Ajouter des commandes à un menu contextuel.

  • Pour mettre en forme le texte dans le signet.

[!REMARQUE]

Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

-

Une édition de Visual Studio 2012 qui inclut les outils de développement Microsoft Office. Pour plus d'informations, consultez [Configuration d'un ordinateur pour développer des solutions Office](bb398242\(v=vs.110\).md).
  • Word 2013 ou Word 2010

Création du projet

La première étape consiste à créer un projet de document Word dans Visual Studio.

Pour créer un projet

  • Créez un projet de document Word portant le nom My Bookmark Shortcut Menu.Dans l'Assistant, sélectionnez Créer un nouveau document.Pour plus d’informations, consultez Comment : créer des projets Office dans Visual Studio.

    Visual Studio ouvre le nouveau document Word dans le concepteur et ajoute le projet My Bookmark Shortcut Menu à l'Explorateur de solutions.

Ajout de texte et de signets au document

Ajoutez du texte à votre document puis ajoutez deux signets superposés.

Pour ajouter du texte à votre document

  • Dans le document qui apparaît dans le concepteur de votre projet, tapez le texte suivant.

    Il s'agit d'un exemple de création d'un menu contextuel lorsque vous cliquez avec le bouton droit sur le texte dans un signet.

Pour ajouter un contrôle Bookmark à votre document

  1. Dans Boîte à outils, de l'onglet Contrôles Word , faites glisser un contrôle de Bookmark à votre document.

    La boîte de dialogue Ajouter un contrôle Bookmark s'affiche.

  2. Sélectionnez les mots « création d'un menu contextuel lorsque vous cliquez avec le bouton droit sur le texte », puis cliquez sur OK.

    bookmark1 est ajouté au document.

  3. Ajoutez un autre contrôle d' Bookmark aux mots « bouton droit sur le texte dans un signet ».

    bookmark2 est ajouté au document.

    [!REMARQUE]

    Les mots « bouton droit sur le texte » sont dans bookmark1 et bookmark2.

Lorsque vous ajoutez un signet à un document au moment du design, un contrôle Bookmark est créé.Vous pouvez programmer plusieurs événements du signet.Ainsi, il est possible d'écrire du code dans l'événement BeforeRightClick du signet de manière à faire apparaître un menu contextuel lorsque l'utilisateur clique avec le bouton droit sur le texte du signet.

Ajouter des commandes à un menu contextuel

Ajoutez des boutons au menu contextuel qui s'affiche lorsque vous cliquez avec le bouton droit sur le document.

Pour ajouter des commandes à un menu contextuel

  1. Ajoutez un élément XML Ruban au projet.Pour plus d’informations, consultez Comment : démarrer avec la personnalisation du ruban.

  2. Dans Explorateur de solutions, ThisDocument.cs activez ou ThisDocument.vb.

  3. Dans la barre de menus, sélectionnez Affichage, Code.

    Le fichier de classe ThisDocument s'ouvre dans l'éditeur de code.

  4. Ajoutez le code suivant à la classe ThisDocument .Ce code substitue la méthode CreateRibbonExtensibilityObject et retourne la classe Ribbon XML à l'application Office.

    Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility
        Return New Ribbon1()
    End Function
    
    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        return new Ribbon1();
    }
    
  5. Dans Explorateur de solutions, sélectionnez le fichier XML du Ruban.Par défaut, le fichier XML du Ruban est nommé Ribbon1.xml.

  6. Dans la barre de menus, sélectionnez Affichage, Code.

    Le fichier XML du ruban s'ouvre dans l'éditeur de code.

  7. Dans l'éditeur de code, remplacez le contenu du fichier XML du Ruban par le code suivant.

    <?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns="https://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
      <contextMenus>
        <contextMenu idMso="ContextMenuText">
          <button id="BoldButton" label="Bold" onAction="ButtonClick"        
               getVisible="GetVisible" />
          <button id="ItalicButton" label="Italic" onAction="ButtonClick" 
              getVisible="GetVisible"/>
        </contextMenu>
      </contextMenus>
    </customUI>
    

    Ce code ajoute deux boutons au menu contextuel qui s'affiche lorsque vous cliquez avec le bouton droit sur le document.

  8. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ThisDocument, puis cliquez sur Afficher le code.

  9. Déclarez les variables suivantes et une variable de signet au niveau de la classe.

    Public selectedBookmark As Microsoft.Office.Tools.Word.Bookmark
    Public ShowBoldButton As String = False
    Public ShowItalicButton As String = False
    Public WordTrue As Integer = -1
    Public WordFalse As Integer = 0
    
            public Microsoft.Office.Tools.Word.Bookmark selectedBookmark;
            public bool showBoldButton = false;
            public bool showItalicButton = false;
            public int WordTrue = -1;
            public int WordFalse = 0;
    
    
  10. Dans Explorateur de solutions, sélectionnez le fichier de code du ruban.Par défaut, le fichier de code du ruban est nommé Ribbon1.cs ou Ribbon1.vb.

  11. Dans la barre de menus, sélectionnez Affichage, Code.

    Le fichier de code du ruban s'ouvre dans l'éditeur de code.

  12. Dans le fichier de code du ruban, ajoutez la méthode suivante.C'est une méthode de rappel pour les deux boutons que vous avez ajoutés au menu contextuel du document.Cette méthode détermine si ces boutons apparaissent dans le menu contextuel.Les boutons gras et italique apparaissent uniquement si vous cliquez avec le bouton droit sur le texte dans le signet.

    Public Function GetVisible(ByVal control As Office.IRibbonControl) As Boolean
        If control.Id = "BoldButton" Then
            If Globals.ThisDocument.ShowBoldButton = True Then
                Globals.ThisDocument.ShowBoldButton = False
                Return True
            Else
                Return False
            End If
        ElseIf control.Id = "ItalicButton" Then
            If Globals.ThisDocument.ShowItalicButton = True Then
                Globals.ThisDocument.ShowItalicButton = False
                Return True
            Else
                Return False
            End If
        Else
            Return False
        End If
    End Function
    
           public bool GetVisible(Office.IRibbonControl control)
           {
               if (control.Id == "BoldButton")
               {
                   if (Globals.ThisDocument.showBoldButton == true)
                   {
                       Globals.ThisDocument.showBoldButton = false;
                       return true;
                   }
                   else
                   {
                       return false;
                   }
               }
               else if (control.Id == "ItalicButton")
               {
                   if (Globals.ThisDocument.showItalicButton == true)
                   {
                       Globals.ThisDocument.showItalicButton = false;
                       return true;
                   }
                   else
                   {
                       return false;
                   }
               }
               else
               {
                   return false;
               }
    
           }
    
    

Pour mettre en forme le texte dans le signet

  1. Dans le fichier de code du ruban, ajoutez un gestionnaire d'événements d' ButtonClick pour appliquer la mise en forme au signet.

    Public Sub ButtonClick(ByVal control As Office.IRibbonControl)
        If control.Id = "BoldButton" Then
            If Globals.ThisDocument.selectedBookmark.Bold = _
                Globals.ThisDocument.WordTrue Then
                Globals.ThisDocument.selectedBookmark.Bold = _
                    Globals.ThisDocument.WordFalse
            Else
                Globals.ThisDocument.selectedBookmark.Bold = _
                    Globals.ThisDocument.WordTrue
            End If
        ElseIf control.Id = "ItalicButton" Then
            If Globals.ThisDocument.selectedBookmark.Italic = _
                Globals.ThisDocument.WordTrue Then
                Globals.ThisDocument.selectedBookmark.Italic = _
                    Globals.ThisDocument.WordFalse
            Else
                Globals.ThisDocument.selectedBookmark.Italic = _
                    Globals.ThisDocument.WordTrue
            End If
        End If
    End Sub
    
    public void ButtonClick(Office.IRibbonControl control)
    {
        if (control.Id == "BoldButton")
        {
            if (Globals.ThisDocument.selectedBookmark.Bold == 
                Globals.ThisDocument.WordTrue)
            {
                Globals.ThisDocument.selectedBookmark.Bold = 
                    Globals.ThisDocument.WordFalse;
            }
            else
            {
                Globals.ThisDocument.selectedBookmark.Bold = 
                    Globals.ThisDocument.WordTrue;
            }
        }
        else if (control.Id == "ItalicButton")
        {
            if (Globals.ThisDocument.selectedBookmark.Italic == 
                Globals.ThisDocument.WordTrue)
            {
                Globals.ThisDocument.selectedBookmark.Italic = 
                    Globals.ThisDocument.WordFalse;
            }
            else
            {
                Globals.ThisDocument.selectedBookmark.Italic = 
                    Globals.ThisDocument.WordTrue;
            }
        }
    
    }
    
  2. Explorateur de solutions, ThisDocument.cs activez ou ThisDocument.vb.

  3. Dans la barre de menus, sélectionnez Affichage, Code.

    Le fichier de classe ThisDocument s'ouvre dans l'éditeur de code.

  4. Ajoutez le code suivant à la classe ThisDocument .

    
    Private Sub Bookmark_BeforeRightClick(ByVal sender As Object, ByVal e _
    As Microsoft.Office.Tools.Word.ClickEventArgs) _
    Handles Bookmark1.BeforeRightClick, Bookmark2.BeforeRightClick
        Dim startPosition As Integer = 0
        Dim i As Integer
    
        ' If bookmarks overlap, get bookmark closest to cursor.
        For i = 1 To e.Selection.Bookmarks.Count
            If e.Selection.Bookmarks(i).Start > startPosition Then
                startPosition = e.Selection.Bookmarks(i).Start
            End If
        Next
    
        ' If closest bookmark is the sender, show the shortcut menu options.
        If DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark).Start = _
            startPosition Then
            selectedBookmark = DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark)
    
            ShowBoldButton = True
            ShowItalicButton = True
    
        End If
    
    End Sub
    
    
            void bookmark_BeforeRightClick(object sender, ClickEventArgs e)
            {
                int startPosition = 0;
    
                // If bookmarks overlap, get bookmark closest to cursor.
                for (int i = 1; i <= e.Selection.Bookmarks.Count; i++)
                {
                    if (e.Selection.Bookmarks[i].Start > startPosition)
                    {
                        startPosition = e.Selection.Bookmarks[i].Start;
                    }
                }
    
                // If closest bookmark is the sender, show shortcut menu options.
                if (((Microsoft.Office.Tools.Word.Bookmark)sender).Start == startPosition)
                {
                    selectedBookmark = (Microsoft.Office.Tools.Word.Bookmark)sender;
    
                    showBoldButton = true;
                    showItalicButton = true;
    
                }
    
            }
    
    

    [!REMARQUE]

    Vous devez écrire du code pour gérer la superposition éventuelle des signets.Si vous ne le faites pas, par défaut, le code sera appelé pour tous les signets de la sélection.

  5. En C#, vous devez ajouter des gestionnaires d'événements pour les contrôles Bookmark à l'événement Startup.Pour plus d'informations sur la création de gestionnaires d'événements, consultez Comment : créer des gestionnaires d'événements dans les projets Office.

    private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        this.bookmark1.BeforeRightClick += new ClickEventHandler(bookmark_BeforeRightClick);
        this.bookmark2.BeforeRightClick += new ClickEventHandler(bookmark_BeforeRightClick);
    }
    

Test de l'application

Testez votre document pour vérifier que les éléments de menu gras et italique apparaissent dans le menu contextuel lorsque vous cliquez avec le bouton droit sur le texte dans un signet et que le texte est correctement mis en forme.

Pour tester votre document

  1. Appuyez sur F5 pour exécuter votre projet.

  2. Cliquez avec le bouton droit dans le premier signet, puis cliquez sur Gras.

  3. Vérifiez que la mise en forme de l'ensemble du texte dans bookmark1 est en gras.

  4. Cliquez avec le bouton droit sur le texte, à l'endroit où les signets se chevauchent, puis cliquez sur Italique.

  5. Vérifiez que sont en italique tout le texte de bookmark2 et seulement la partie du texte de bookmark1 qui recoupe bookmark2.

Étapes suivantes

Vous devrez peut-être ensuite exécuter les opérations suivantes :

Voir aussi

Concepts

Procédures pas à pas utilisant Word

Automatisation de Word à l'aide d'objets étendus

Bookmark, contrôle

Paramètres optionnels dans les solutions Office

Autres ressources

Personnalisation de l'interface utilisateur Office