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

  • Hinzufügen von Text und Lesezeichen zu einem Dokument in einem Projekt auf Dokumentebene zur Entwurfszeit

  • Erstellen eines Kontextmenüs

  • Überprüfen auf überlappende Lesezeichen

Tipp

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 2010, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.100\).md).
  • Microsoft Office Word 2007 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 zum Dokument

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

So fügen Sie dem Dokument Text hinzu

  • Geben Sie 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 Bookmark-Steuerelement hinzu

  1. Ziehen Sie aus der Registerkarte Word-Steuerelemente der Toolbox ein Bookmark-Steuerelement in das Dokument.

    Das Dialogfeld Lesezeichen-Steuerelement hinzufügen wird angezeigt.

  2. Markieren Sie die Wörter Erstellen eines Kontextmenüs, wenn Sie mit der rechten Maustaste auf den Text klicken, und klicken Sie dann auf OK.

    Dem Dokument wird bookmark1 hinzugefügt.

  3. Fügen Sie für die Wörter mit der rechten Maustaste auf den Text in einem Lesezeichen klicken ein weiteres Bookmark-Steuerelement hinzu.

    Dem Dokument wird bookmark2 hinzugefügt.

    Tipp

    Die Wörter mit der rechten Maustaste auf den Text werden sowohl in bookmark1 als auch in bookmark2 angezeigt.

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.

Erstellen des Kontextmenüs

So erstellen Sie das Kontextmenü

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

  2. Deklarieren Sie auf Klassenebene die CommandBar-Variablen sowie eine Lesezeichenvariable.

    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. Fügen Sie eine Methode hinzu, um das Menü zu erstellen.

    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. Rufen Sie AddPopup aus dem Startup-Ereignis von ThisDocument auf.

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

So formatieren Sie den Text im Lesezeichen

  1. Fügen Sie einen ButtonClick-Ereignishandler hinzu, um die Formatierung auf das Lesezeichen anzuwenden.

    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. Fügen Sie einen showPopupMenu-Ereignishandler hinzu, um das BeforeRightClick-Ereignis von beiden Lesezeichen zu behandeln.

    Tipp

    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.

    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# 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.

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

Testen der Anwendung

Testen Sie das Dokument, um sicherzustellen, dass die fett und kursiv formatierten Menüelemente im Kontextmenü angezeigt werden, wenn Sie mit der rechten Maustaste auf den Text in einem Lesezeichen klicken. Außerdem müssen Sie prüfen, ob der Text korrekt 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