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 2007 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:

  • Aggiunta di testo e di segnalibri al documento contenuto in un progetto a livello di documento in fase di progettazione.

  • Creazione di un menu di scelta rapida.

  • Verifica della presenza di eventuali segnalibri sovrapposti.

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 2010 che include gli strumenti per sviluppatori di Microsoft Office. Per ulteriori informazioni, vedere [Configurazione di un computer per sviluppare soluzioni Office](bb398242\(v=vs.100\).md).
  • Microsoft Office Word 2007 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

  • 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. Trascinare sul documento un controllo Bookmark dalla scheda Controlli Word della Casella degli strumenti.

    Verrà visualizzata la finestra di dialogo Aggiungi controllo Bookmark.

  2. Selezionare le parole creating a shortcut menu when you right-click the text e quindi fare clic su OK.

    bookmark1 verrà aggiunto al documento.

  3. Aggiungere un altro controllo Bookmark alle parole right-click the text in a bookmark.

    bookmark2 verrà aggiunto al documento.

    Nota

    Le parole right-click the text verranno visualizzate sia in bookmark1 sia 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.

Creazione del menu di scelta rapida

Per creare il menu di scelta rapida

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

  2. Dichiarare le variabili CommandBar e una variabile segnalibro a livello di classe.

    Private commandBar As Office.CommandBar
    Private selectedBookmark As Microsoft.Office.Tools.Word.Bookmark
    WithEvents boldText As Office.CommandBarButton
    WithEvents ItalicText As Office.CommandBarButton
    
    private Office.CommandBar commandBar;
    private Office.CommandBarButton boldText;
    private Office.CommandBarButton italicText;
    private Microsoft.Office.Tools.Word.Bookmark selectedBookmark;
    
    const int WordTrue = -1;
    const int WordFalse = 0;
    
  3. Aggiungere un metodo per creare il menu.

    Private Sub AddPopUp()
    
        commandBar = Application.CommandBars.Add( _
            "FormatText", Office.MsoBarPosition.msoBarPopup, , True)
    
        ' Add a button and set the style, caption, icon and tag.
        boldText = CType(commandBar.Controls.Add(1), Office.CommandBarButton)
    
        With boldText
            .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
            .Caption = "Bold"
            .FaceId = 113
            .Tag = "0"
        End With
    
        ' Add a button and set the style, caption, icon and tag.
        ItalicText = CType(commandBar.Controls.Add(1), Office.CommandBarButton)
    
        With ItalicText
            .Style = Office.MsoButtonStyle.msoButtonIconAndCaption
            .Caption = "Italic"
            .FaceId = 114
            .Tag = "1"
        End With
    
        CType(Me.AttachedTemplate, Microsoft.Office.Interop.Word.Template).Saved = True
    
    End Sub
    
    private void AddPopUp()
    {
        commandBar = Application.CommandBars.Add("FormatText",
            Office.MsoBarPosition.msoBarPopup, missing, true);
    
        // Add a button and set the style, caption, icon and tag.
        boldText = (Office.CommandBarButton)commandBar.Controls.Add(
            1, missing, missing, missing, missing);
    
        boldText.Style = Office.MsoButtonStyle.msoButtonCaption;
        boldText.Caption = "Bold";
        boldText.FaceId = 113;
        boldText.Tag = "0";
    
        // Add a button and set the style, caption, icon and tag.
        italicText = (Office.CommandBarButton)commandBar.Controls.Add(
            1, missing, missing, missing, missing);
    
        italicText.Style = Office.MsoButtonStyle.msoButtonCaption;
        italicText.Caption = "Italic";
        italicText.FaceId = 114;
        italicText.Tag = "1";
    
        // Handle the click events with the ButtonClick procedure.
        boldText.Click +=
            new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(ButtonClick);
    
        italicText.Click +=
            new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(ButtonClick);
    
        ((Microsoft.Office.Interop.Word.Template)this.AttachedTemplate).Saved = true;
    }
    
  4. Chiamare AddPopup dall'evento Startup di ThisDocument.

    Private Sub ThisDocument_Startup(ByVal sender As Object, ByVal e As _
        System.EventArgs) Handles Me.Startup
    
        AddPopUp()
    End Sub
    
    private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        AddPopUp();
    }
    

Per formattare il testo nel segnalibro

  1. Aggiungere un gestore eventi ButtonClick per applicare la formattazione al segnalibro.

    Private Sub ButtonClick(ByVal ctrl As Office.CommandBarButton, _
        ByRef Cancel As Boolean) Handles boldText.Click, ItalicText.Click
    
        Select Case ctrl.Caption
            Case "Bold"
                selectedBookmark.Bold = Not selectedBookmark.Bold
            Case "Italic"
                selectedBookmark.Italic = Not selectedBookmark.Italic
        End Select
    
        Me.ActiveWindow.SetFocus()
    End Sub
    
    private void ButtonClick(Microsoft.Office.Core.CommandBarButton Ctrl,
        ref bool CancelDefault)
    {
        if (Ctrl.Caption == "Bold")
        {
            if (selectedBookmark.Bold == WordTrue)
            {
                selectedBookmark.Bold = WordFalse;
            }
            else
            {
                selectedBookmark.Bold = WordTrue;
            }
        }
        else if (Ctrl.Caption == "Italic")
        {
            if (selectedBookmark.Italic == WordTrue)
            {
                selectedBookmark.Italic = WordFalse;
            }
            else
            {
                selectedBookmark.Italic = WordTrue;
            }
        }
    }
    
  2. Aggiungere un gestore eventi showPopupMenu per gestire l'evento BeforeRightClick di entrambi i segnalibri.

    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.

    Private Sub showPopupMenu(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 popup.
        If DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark).Start = _
            startPosition Then
            selectedBookmark = DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark)
            commandBar.ShowPopup()
            e.Cancel = True
        End If
    End Sub
    
    private void ShowPopupMenu(object sender,
        Microsoft.Office.Tools.Word.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 the popup.
        if (((Microsoft.Office.Tools.Word.Bookmark)sender).Start == startPosition)
        {
            selectedBookmark = (Microsoft.Office.Tools.Word.Bookmark)sender;
            commandBar.ShowPopup(missing, missing);
            e.Cancel = true;
        }
    }
    
  3. 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.

    this.bookmark1.BeforeRightClick +=
        new Microsoft.Office.Tools.Word.ClickEventHandler(ShowPopupMenu);
    
    this.bookmark2.BeforeRightClick +=
        new Microsoft.Office.Tools.Word.ClickEventHandler(ShowPopupMenu);
    

Verifica dell'applicazione

Verificare il documento per accertarsi che nel menu di scelta rapida vengano visualizzate le voci di menu Bold e Italic quando si fa clic con il pulsante destro del mouse sul testo di un segnalibro e che il testo sia formattato correttamente.

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