Freigeben über


Exemplarische Vorgehensweise: Erstellen von Kontextmenüs für Lesezeichen

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Kontextmenüs für Bookmark-Steuerelemente in einer Anpassung auf Dokumentebene für Word erstellt werden.Wenn ein Benutzer mit der rechten Maustaste auf den Text in einem Lesezeichen klickt, wird ein Kontextmenü mit Optionen zum Formatieren des Texts angezeigt.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene für Word 2013 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

  • Erstellen des Projekts.

  • Hinzufügen von Text und Lesezeichen im Dokument.

  • Hinzufügen von Befehlen zu einem Kontextmenü.

  • So formatieren Sie den Text im Lesezeichen.

HinweisHinweis

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

-

Eine Version von Visual Studio 2012, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.110\).md).
  • Word 2013 oder Word 2010

Erstellen des Projekts

Der erste Schritt besteht darin, ein Word-Dokumentprojekt in Visual Studio zu erstellen.

So erstellen Sie ein neues Projekt

  • Erstellen Sie ein Word-Dokumentprojekt mit dem Namen My Bookmark Shortcut Menu.Wählen Sie im Assistenten Neues Dokument erstellen aus.Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.

    Visual Studio öffnet das neue Word-Dokument im Designer und fügt dem Projektmappen-Explorer das Mein Lesezeichenkontextmenü-Projekt hinzu.

Hinzufügen von Text und Lesezeichen im Dokument

Fügen Sie dem Dokument etwas Text und dann zwei überlappende Lesezeichen hinzu.

So fügen Sie dem Dokument Text hinzu

  • Im Dokument, das im Designer des Projekts angezeigt wird, geben Sie den folgenden Text ein.

    Dies ist ein Beispiel für das Erstellen eines Kontextmenüs, das angezeigt wird, wenn Sie mit der rechten Maustaste auf den Text in einem Lesezeichen klicken.

So fügen Sie dem Dokument ein Lesezeichen-Steuerelement hinzu

  1. In Werkzeugkasten aus der Registerkarte Word-Steuerelemente, Ziehen Bookmark ein - Steuerelement in das Dokument.

    Das Dialogfeld Lesezeichen-Steuerelement hinzufügen wird angezeigt.

  2. Wählen Sie die Wörter "aus, die ein Kontextmenü erstellen, wenn Sie auf den Text" mit der rechten Maustaste auf, und klicken Sie dann auf OK.

    Dem Dokument wird bookmark1 hinzugefügt.

  3. Fügen Sie ein weiteres - Steuerelement Bookmark den Wörtern "mit der rechten Maustaste auf den Text in einem Lesezeichen" hinzu.

    Dem Dokument wird bookmark2 hinzugefügt.

    HinweisHinweis

    Die Wörter "mit der rechten Maustaste auf den Text" sind in bookmark1 und in bookmark2.

Wenn Sie einem Dokument zur Entwurfszeit ein Lesezeichen hinzufügen, wird ein Bookmark-Steuerelement erstellt.Sie können mehrere Ereignisse des Lesezeichens programmieren.Sie können Code in das BeforeRightClick-Ereignis des Lesezeichens schreiben, sodass ein Kontextmenü angezeigt wird, wenn der Benutzer mit der rechten Maustaste auf den Text in einem Lesezeichen klickt.

Hinzufügen von Befehlen zu einem Kontextmenü

Fügen Sie Schaltflächen Kontextmenü hinzu, das angezeigt wird, wenn Sie mit der rechten Maustaste auf das Dokument klicken.

Um Befehle einem Kontextmenü hinzufügen

  1. Fügen Sie ein Menüband-XML-Element hinzu.Weitere Informationen finden Sie unter Gewusst wie: Erste Schritte beim Anpassen der Multifunktionsleiste.

  2. In Projektmappen-Explorer, in ThisDocument.cs Auswahl- oder in ThisDocument.vb.

  3. Klicken Sie auf der Menüleiste wählen Sie Ansicht, Code aus.

    Die ThisDocument-Klassendatei wird im Code-Editor geöffnet.

  4. Fügen Sie den folgenden Code der ThisDocument-Klasse hinzu.Mit diesem Code wird die CreateRibbonExtensibilityObject-Methode überschrieben und der Office-Anwendung die Menüband-XML-Klasse zurückgegeben.

    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 Projektmappen-Explorer wählen Sie die Menüband-XML-Datei aus.Standardmäßig wird die Menüband-XML-Datei Ribbon1.xml benannt.

  6. Klicken Sie auf der Menüleiste wählen Sie Ansicht, Code aus.

    Die Menübandxml-datei wird im Code-Editor geöffnet.

  7. Ersetzen Sie im Code-Editor den Inhalt der Menüband-XML-Datei durch den folgenden Code.

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

    Mit diesem Code werden zwei Schaltflächen Kontextmenü hinzu, das angezeigt wird, wenn Sie mit der rechten Maustaste auf das Dokument klicken.

  8. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf ThisDocument, und klicken Sie dann auf Code anzeigen.

  9. Deklarieren Sie die folgenden Variablen und eine Lesezeichenvariable auf Klassenebene.

    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 Projektmappen-Explorer wählen Sie die Menüband-Codedatei aus.Standardmäßig wird die Menüband-Codedatei Ribbon1.cs oder Ribbon1.vb benannt.

  11. Klicken Sie auf der Menüleiste wählen Sie Ansicht, Code aus.

    Die Menüband-Codedatei wird im Code-Editor geöffnet.

  12. In der Menüband-Codedatei fügen Sie die folgende Methode hinzu.Dies ist eine Rückrufmethode für die zwei Schaltflächen, die Sie dem Kontextmenü des Dokuments hinzugefügt haben.Diese Methode bestimmt, ob diese Schaltflächen im Kontextmenü angezeigt werden.Die fett und kursiv formatierten Schaltflächen werden nur angezeigt, wenn Sie auf Text innerhalb eines Lesezeichens mit der rechten Maustaste auf.

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

So formatieren Sie den Text im Lesezeichen

  1. In der Menüband-Codedatei fügen Sie einen ButtonClick-Ereignishandler hinzu, um die Formatierung auf das Lesezeichen anzuwenden.

    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. Projektmappen-Explorer, wählen Sie ThisDocument.cs oder ThisDocument.vb.

  3. Klicken Sie auf der Menüleiste wählen Sie Ansicht, Code aus.

    Die ThisDocument-Klassendatei wird im Code-Editor geöffnet.

  4. Fügen Sie den folgenden Code der ThisDocument-Klasse hinzu.

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

    Sie müssen Code schreiben, um Fälle zu behandeln, in denen sich Lesezeichen überlappen.Ohne solchen Code wird standardmäßig der Code für alle Lesezeichen aufgerufen, auf die geklickt wurde.

  5. In C# müssen Sie Ereignishandler für die Bookmark-Steuerelemente zum Startup-Ereignis hinzufügen.Weitere Informationen zum Erstellen von Ereignishandlern finden Sie unter Gewusst wie: Erstellen von Ereignishandlern in Office-Projekten.

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

Testen der Anwendung

Testen Sie das Dokument, um sicherzustellen, dass die fett und kursiv formatierten Menüelemente im Kontextmenü angezeigt werden, wenn Sie auf den Text in einem Lesezeichen mit der rechten Maustaste klicken und der Text richtig formatiert ist.

So testen Sie das Dokument

  1. Drücken Sie F5, um das Projekt auszuführen.

  2. Klicken Sie mit der rechten Maustaste in das erste Lesezeichen, und klicken Sie dann auf Fett.

  3. Stellen Sie sicher, dass der gesamte Text in bookmark1 fett formatiert ist.

  4. Klicken Sie mit der rechten Maustaste auf den Text, in dem sich die Lesezeichen überlappen, und klicken Sie dann auf Kursiv.

  5. Stellen Sie sicher, dass der gesamte Text in bookmark2 kursiv formatiert ist, in bookmark1 jedoch nur der Teil des Texts, der bookmark2 überlappt, kursiv formatiert ist.

Nächste Schritte

Die folgenden Aufgaben könnten sich daran anschließen:

Siehe auch

Konzepte

Exemplarische Vorgehensweisen in Word

Automatisieren von Word mithilfe von erweiterten Objekten

Bookmark-Steuerelement

Optionale Parameter in Office-Lösungen

Weitere Ressourcen

Anpassung der Office-Benutzeroberfläche