Procedura dettagliata: creazione di menu di scelta rapida per segnalibri

In questa procedura dettagliata viene illustrato come creare menu di scelta rapida per i controlli Bookmark in una personalizzazione a livello di documento per Word.Quando un utente fa clic con il pulsante destro del mouse sul testo di un segnalibro, il sistema visualizza un menu di scelta rapida contenente alcune opzioni di formattazione del testo.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento per Word 2013 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Creazione del progetto.

  • Aggiunta di testo e segnalibri al documento.

  • Aggiunta di controlli a un menu di scelta rapida.

  • Per formattare il testo nel segnalibro.

[!NOTA]

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

-

Una versione di Visual Studio 2012 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.110\).md).
  • Word 2013 o Word 2010

Creazione del progetto

Il primo passaggio consiste nel creare un progetto Documento di Word in Visual Studio.

Per creare un nuovo progetto

  • Creare un progetto Documento di Word denominato My Bookmark Shortcut Menu.Nella procedura guidata, scegliere Crea un nuovo documento.Per ulteriori informazioni, vedere Procedura: creare progetti di Office in Visual Studio.

    Il nuovo documento di Word verrà aperto nella finestra di progettazione e il progetto My Bookmark Shortcut Menu verrà aggiunto in Esplora soluzioni.

Aggiunta di testo e segnalibri al documento

Aggiungere testo al documento e quindi aggiungere due segnalibri sovrapposti.

Per aggiungere testo al documento

  • Nel documento visualizzato nella finestra di progettazione del progetto, digitare il testo seguente.

    This is an example of creating a shortcut menu when you right-click the text in a bookmark.

Per aggiungere un controllo Bookmark al documento

  1. In Casella degli strumenti, dalla scheda Controlli Word, trascinare un controllo Bookmark al documento.

    Verrà visualizzata la finestra di dialogo Aggiungi controllo Bookmark.

  2. Selezionare le parole “che creano un menu di scelta rapida facendo clic con il pulsante destro del mouse sul testo„ e quindi fare clic OK.

    bookmark1 verrà aggiunto al documento.

  3. Aggiungere un altro controllo Bookmark alle parole “fare clic con il pulsante destro del mouse sul testo in un segnalibro„.

    bookmark2 verrà aggiunto al documento.

    [!NOTA]

    Le parole “fare clic con il pulsante destro del mouse sul testo„ sia in bookmark1 che in bookmark2.

Quando si aggiunge in fase di progettazione un segnalibro a un documento, il sistema crea un controllo Bookmark.È possibile programmare il segnalibro in funzione di vari eventi.È possibile scrivere codice nell'evento BeforeRightClick del segnalibro che consente di visualizzare un menu di scelta rapida quando l'utente fa clic con il pulsante destro del mouse sul testo del segnalibro.

Aggiunta di controlli a un menu di scelta rapida

Aggiungere pulsanti al menu di scelta rapida che viene visualizzato facendo clic con il pulsante destro del mouse sul documento.

Per aggiungere controlli a un menu di scelta rapida

  1. Aggiungere un elemento Barra multifunzione (XML) al progetto.Per ulteriori informazioni, vedere Procedura: iniziare a personalizzare la barra multifunzione.

  2. In Esplora soluzioni, in ThisDocument.cs selezionato o in ThisDocument.vb.

  3. Sulla barra dei menu, scegliere Visualizza, Codice.

    Il file di classe ThisDocument verrà aperto nell'editor di codice.

  4. Aggiungere il codice seguente alla classe ThisDocument.Questo codice esegue l'override del metodo CreateRibbonExtensibilityObject e restituisce la classe Ribbon XML all'applicazione di 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. In Esplora soluzioni, selezionare il file XML della barra multifunzione.Per impostazione predefinita, il file XML della barra multifunzione è denominato Ribbon1.xml.

  6. Sulla barra dei menu, scegliere Visualizza, Codice.

    Il file XML della barra multifunzione viene aperto nell'editor di codice.

  7. Nell'editor di codice, sostituire il contenuto del file XML della barra multifunzione con il codice seguente.

    <?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>
    

    Questo codice aggiunge due pulsanti al menu di scelta rapida che viene visualizzato facendo clic con il pulsante destro del mouse sul documento.

  8. In Esplora soluzioni, fare clic con il pulsante destro del mouse su ThisDocument e quindi scegliere Visualizza codice.

  9. Dichiarare le variabili e una variabile segnalibro a livello di 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. In Esplora soluzioni, selezionare il file di codice della barra multifunzione.Per impostazione predefinita, il file di codice della barra multifunzione è denominato Ribbon1.cs o Ribbon1.vb.

  11. Sulla barra dei menu, scegliere Visualizza, Codice.

    Il file di codice della barra multifunzione viene aperto nell'editor di codice.

  12. Nel file di codice della barra multifunzione, aggiungere il seguente metodo.Si tratta di un metodo di callback per i due pulsanti aggiunto al menu di scelta rapida del documento.Questo metodo determina se questi pulsanti visualizzati nel menu di scelta rapida.I pulsanti grassetto e corsivo vengono visualizzati solo facendo clic con il pulsante destro del mouse sul testo nel segnalibro.

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

Per formattare il testo nel segnalibro

  1. Nel file di codice della barra multifunzione, aggiungere un gestore eventi ButtonClick per applicare la formattazione al segnalibro.

    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. Esplora soluzioni, ThisDocument.cs selezionato o ThisDocument.vb.

  3. Sulla barra dei menu, scegliere Visualizza, Codice.

    Il file di classe ThisDocument verrà aperto nell'editor di codice.

  4. Aggiungere il codice seguente alla 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;
    
                }
    
            }
    
    

    [!NOTA]

    È necessario creare codice per gestire eventuali segnalibri sovrapposti.In caso contrario, per impostazione predefinita verrà chiamato il codice di tutti i segnalibri all'interno della selezione.

  5. In C# è necessario aggiungere gestori eventi per i controlli Bookmark all'evento Startup.Per ulteriori informazioni sulla creazione di gestori eventi, vedere Procedura: creare gestori eventi in progetti di Office.

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

Verifica dell'applicazione

Verificare il documento per verificare che le voci di menu bold e corsive vengono visualizzati nel menu di scelta rapida facendo clic con il pulsante destro del mouse sul testo nel segnalibro e che il testo sia corretta.

Per testare il documento

  1. Premere F5 per eseguire il progetto.

  2. Fare clic con il pulsante destro del mouse sul primo segnalibro e quindi scegliere Bold.

  3. Verificare che tutto il testo presente in bookmark1 sia formattato in grassetto.

  4. Fare clic con il pulsante destro del mouse sul testo di sovrapposizione dei segnalibri e quindi fare clic su Italic.

  5. Verificare che l'intero testo del segnalibro bookmark2 sia in corsivo e che solo la parte di testo del segnalibro bookmark1 che si sovrappone al segnalibro bookmark2 sia in corsivo.

Passaggi successivi

Di seguito sono elencate alcune procedure che potrebbero essere necessarie per estendere il progetto:

Vedere anche

Concetti

Procedure dettagliate con Word

Automazione di Word utilizzando oggetti estesi

Controllo Bookmark

Parametri facoltativi nelle soluzioni Office

Altre risorse

Personalizzazione dell'interfaccia utente di Office