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
Ziehen Sie aus der Registerkarte Word-Steuerelemente der Toolbox ein Bookmark-Steuerelement in das Dokument.
Das Dialogfeld Lesezeichen-Steuerelement hinzufügen wird angezeigt.
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.
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ü
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf ThisDocument, und klicken Sie dann auf Code anzeigen.
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;
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; }
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
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; } } }
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; } }
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
Drücken Sie F5, um das Projekt auszuführen.
Klicken Sie mit der rechten Maustaste in das erste Lesezeichen, und klicken Sie dann auf Fett.
Stellen Sie sicher, dass der gesamte Text in bookmark1 fett formatiert ist.
Klicken Sie mit der rechten Maustaste auf den Text, in dem sich die Lesezeichen überlappen, und klicken Sie dann auf Kursiv.
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:
Schreiben von Code, um in Excel auf Ereignisse von Hoststeuerelementen zu reagieren. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Programmieren in Abhängigkeit von Ereignissen eines NamedRange-Steuerelements.
Verwenden eines Kontrollkästchens, um die Formatierung in einem Lesezeichen zu ändern. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Ändern der Dokumentformatierung mit CheckBox-Steuerelementen.
Siehe auch
Konzepte
Exemplarische Vorgehensweisen in Word
Automatisieren von Word mithilfe von erweiterten Objekten
Optionale Parameter in Office-Lösungen