Procédure pas à pas : Créer des menus contextuels pour les signetsWalkthrough: Create shortcut menus for bookmarks

Cette procédure pas à pas montre comment créer des menus contextuels pour Bookmark contrôles dans une personnalisation au niveau du document pour Word.This walkthrough demonstrates how to create shortcut menus for Bookmark controls in a document-level customization for Word. Quand un utilisateur clique sur le texte d’un signet, un menu contextuel s’affiche et proposant des options de mise en forme le texte.When a user right-clicks the text in a bookmark, a shortcut menu appears and gives the user options for formatting the text.

S’applique à : Les informations contenues dans cette rubrique s’appliquent aux projets de niveau document pour Word.Applies to: The information in this topic applies to document-level projects for Word. Pour plus d’informations, consultez fonctionnalités disponibles par type d’application et de projet Office.For more information, see Features available by Office application and project type.

Cette procédure pas à pas décrit les tâches suivantes :This walkthrough illustrates the following tasks:

PrérequisPrerequisites

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :You need the following components to complete this walkthrough:

Créer le projetCreate the project

La première étape consiste à créer un projet de document Word dans Visual Studio.The first step is to create a Word document project in Visual Studio.

Pour créer un projetTo create a new project

  • Créez un projet de document Word qui porte le nom Mon Menu contextuel de signet.Create a Word document project that has the name My Bookmark Shortcut Menu. Dans l’Assistant, sélectionnez créer un nouveau document.In the wizard, select Create a new document. Pour plus d’informations, consultez Comment : les projets Office de créer dans Visual Studio.For more information, see How to: Create Office projects in Visual Studio.

    Visual Studio ouvre le nouveau document Word dans le concepteur et ajoute le Mon Menu contextuel de signet projet l’Explorateur de solutions.Visual Studio opens the new Word document in the designer and adds the My Bookmark Shortcut Menu project to Solution Explorer.

Ajouter du texte et signets au documentAdd text and bookmarks to the document

Ajouter du texte à votre document, puis ajoutez deux signets qui se chevauchent.Add some text to your document and then add two overlapping bookmarks.

Pour ajouter du texte à votre documentTo add text to your document

  • Dans le document qui s’affiche dans le Concepteur de votre projet, tapez le texte suivant.In the document that appears in the designer of your project, type the following text.

    Il s’agit d’un exemple de création d’un menu contextuel lorsque vous cliquez sur le texte d’un signet.This is an example of creating a shortcut menu when you right-click the text in a bookmark.

Pour ajouter un contrôle Bookmark à votre documentTo add a Bookmark control to your document

  1. Dans le boîte à outils, à partir de la contrôles Word onglet, faites glisser un Bookmark contrôle à votre document.In the Toolbox, from the Word Controls tab, drag a Bookmark control to your document.

    Le ajouter un contrôle Bookmark boîte de dialogue s’affiche.The Add Bookmark Control dialog box appears.

  2. Sélectionnez les mots « création d’un menu contextuel lorsque vous cliquez sur le texte », puis cliquez sur OK.Select the words "creating a shortcut menu when you right-click the text", and then click OK.

    bookmark1 est ajouté au document.bookmark1 is added to the document.

  3. Ajoutez un autre Bookmark contrôler avec les mots « cliquez sur le texte d’un signet ».Add another Bookmark control to the words "right-click the text in a bookmark".

    bookmark2 est ajouté au document.bookmark2 is added to the document.

    Note

    Les mots « cliquez sur le texte » se trouvent dans les deux bookmark1 et bookmark2.The words "right-click the text" are in both bookmark1 and bookmark2.

    Lorsque vous ajoutez un signet à un document au moment du design, un Bookmark contrôle est créé.When you add a bookmark to a document at design time, a Bookmark control is created. Vous pouvez programmer plusieurs événements du signet.You can program against several events of the bookmark. Vous pouvez écrire du code le BeforeRightClick événement du signet afin que lorsque l’utilisateur clique sur le texte dans le signet, un menu contextuel s’affiche.You can write code in the BeforeRightClick event of the bookmark so that when the user right-clicks the text in the bookmark, a shortcut menu appears.

Ajouter des commandes à un menu contextuelAdd commands to a shortcut menu

Ajouter des boutons au menu contextuel qui s’affiche lorsque vous cliquez sur le document.Add buttons to the shortcut menu that appears when you right-click the document.

Pour ajouter des commandes à un menu contextuelTo add commands to a shortcut menu

  1. Ajouter un ruban XML élément au projet.Add a Ribbon XML item to the project. Pour plus d’informations, consultez Comment : démarrer avec la personnalisation du ruban.For more information, see How to: Get started customizing the ribbon.

  2. Dans l’Explorateur de solutions, sélectionnez ThisDocument.cs ou ThisDocument.vb.In Solution Explorer, select ThisDocument.cs or ThisDocument.vb.

  3. Dans la barre de menus, sélectionnez Afficher > Code.On the menu bar, choose View > Code.

    Le ThisDocument fichier de classe s’ouvre dans l’éditeur de Code.The ThisDocument class file opens in the Code Editor.

  4. Ajoutez le code suivant à la ThisDocument classe.Add the following code to the ThisDocument class. Ce code substitue la méthode CreateRibbonExtensibilityObject et retourne la classe Ribbon XML à l’application Office.This code overrides the CreateRibbonExtensibilityObject method and returns the Ribbon XML class to the Office application.

    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        return new Ribbon1();
    }
    
    Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility
        Return New Ribbon1()
    End Function
    
  5. Dans l’ Explorateur de solutions, sélectionnez le fichier XML de ruban.In Solution Explorer, select the Ribbon XML file. Par défaut, le fichier XML de ruban se nomme Ribbon1.xml.By default, the Ribbon XML file is named Ribbon1.xml.

  6. Dans la barre de menus, sélectionnez Afficher > Code.On the menu bar, choose View > Code.

    Le fichier XML de ruban s’ouvre dans l’éditeur de code.The Ribbon xml file opens in the Code Editor.

  7. Dans l’éditeur de Code, remplacez le contenu du fichier XML du ruban avec le code suivant.In the Code Editor, replace the contents of the Ribbon XML file with the following code.

    <?xml version="1.0" encoding="UTF-8"?>  
    <customUI xmlns="http://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 sur le document.This code adds two buttons to the shortcut menu that appears when you right-click the document.

  8. Dans l’Explorateur de solutions, avec le bouton droit ThisDocument, puis cliquez sur afficher le Code.In Solution Explorer, right-click ThisDocument, and then click View Code.

  9. Déclarez les variables suivantes et une variable de signet au niveau de la classe.Declare the following variables and a bookmark variable at the class level.

    public Microsoft.Office.Tools.Word.Bookmark selectedBookmark;
    public bool showBoldButton = false;
    public bool showItalicButton = false;
    public int WordTrue = -1;
    public int WordFalse = 0;
    
    
    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
    
  10. Dans l’Explorateur de solutions, sélectionnez le fichier de code du ruban.In Solution Explorer, select the Ribbon code file. Par défaut, le fichier de code de ruban est nommé Ribbon1.cs ou Ribbon1.vb.By default, the Ribbon code file is named Ribbon1.cs or Ribbon1.vb.

  11. Dans la barre de menus, sélectionnez Afficher > Code.On the menu bar, choose View > Code.

    Le fichier de code du ruban s'ouvre dans l'éditeur de code.The Ribbon code file opens in the Code Editor.

  12. Dans le fichier de code du ruban, ajoutez la méthode suivante.In the Ribbon code file, add the following method. Il s’agit d’une méthode de rappel pour les deux boutons que vous avez ajoutés au menu contextuel du document.This is a callback method for the two buttons that you have added to the shortcut menu of the document. Cette méthode détermine si ces boutons s’affichent dans le menu contextuel.This method determines whether these buttons appear in the shortcut menu. Les boutons gras et italiques apparaissent uniquement si vous cliquez sur le texte dans le signet.The bold and italic buttons appear only if you right-click text within the bookmark.

    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;
        }
    
    }
    
    
    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
    

Mettre en forme le texte dans le signetFormat the text in the bookmark

Pour mettre en forme le texte dans le signetTo format the text in the bookmark

  1. Dans le fichier de code du ruban, ajoutez un ButtonClick Gestionnaire d’événements pour appliquer la mise en forme au signet.In the Ribbon code file, add a ButtonClick event handler to apply formatting to the bookmark.

    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;
            }
        }
    
    }
    
    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
    
  2. L’Explorateur de solutions, sélectionnez ThisDocument.cs ou ThisDocument.vb.Solution Explorer, select ThisDocument.cs or ThisDocument.vb.

  3. Dans la barre de menus, sélectionnez Afficher > Code.On the menu bar, choose View > Code.

    Le ThisDocument fichier de classe s’ouvre dans l’éditeur de Code.The ThisDocument class file opens in the Code Editor.

  4. Ajoutez le code suivant à la ThisDocument classe.Add the following code to the ThisDocument class.

    
    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;
    
        }
    
    }
    
    
    
    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
    

    Note

    Vous devez écrire du code pour gérer le cas où les signets se chevauchent.You must write code to handle the case where bookmarks overlap. Si vous le faites pas, par défaut, le code sera appelé pour tous les signets dans la sélection.If you do not, by default, the code will be called for all bookmarks in the selection.

  5. En c#, vous devez ajouter des gestionnaires d’événements pour les contrôles bookmark à la Startup événement.In C#, you must add event handlers for the bookmark controls to the Startup event. 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.For information about creating event handlers, see How to: Create event handlers in Office projects.

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

Tester l’applicationTest the application

Tester votre document pour vérifier que les éléments de menu gras et italique apparaissent dans le menu contextuel lorsque vous cliquez sur le texte d’un signet et que le texte est correctement mis en forme.Test your document to verify that the bold and italic menu items appear in the shortcut menu when you right-click text in a bookmark and that the text is properly formatted.

Pour tester votre documentTo test your document

  1. Appuyez sur F5 pour exécuter votre projet.Press F5 to run your project.

  2. Avec le bouton droit dans le premier signet, puis cliquez sur gras.Right-click in the first bookmark, and then click Bold.

  3. Vérifiez que tout le texte dans bookmark1 est mis en gras.Verify that all of the text in bookmark1 is formatted as bold.

  4. Cliquez sur le texte où les signets se chevauchent, puis cliquez sur italique.Right-click the text where the bookmarks overlap, and then click Italic.

  5. Vérifiez que tout le texte dans bookmark2 est italique et seule la partie du texte dans bookmark1 qui chevauche bookmark2 est en italique.Verify that all of the text in bookmark2 is italic, and only the part of the text in bookmark1 that overlaps bookmark2 is italic.

Étapes suivantesNext steps

Voici quelques tâches susceptibles de venir après :Here are some tasks that might come next:

Voir aussiSee also

Procédures pas à pas utilisant Word Walkthroughs using Word
Personnalisation de l’interface utilisateur Office Office UI customization
Automatiser Word à l’aide d’objets étendus Automate Word by using extended objects
Bookmark (contrôle) Bookmark control
Paramètres optionnels dans les solutions OfficeOptional parameters in Office solutions