Пошаговое руководство. Создание контекстного меню для закладок
Обновлен: Ноябрь 2007
Применение |
---|
Сведения, приведенные в данном разделе, относятся только к указанным проектам Visual Studio Tools for Office и версиям Microsoft Office. Тип проекта
Версия Microsoft Office
Дополнительные сведения см. в разделе Доступность функций по типам приложений и проектов. |
Это пошаговое руководство демонстрирует, как создавать контекстные меню для элементов управления Bookmark в настройках на уровне документа для Word. Когда пользователь щелкает правой кнопкой мыши текст в закладке, появляется контекстное меню, содержащее параметры для форматирования текста.
В этом руководстве описываются следующие задачи.
Добавление текста и закладок в документ в проекте уровня документа во время разработки.
создание контекстного меню;
проверка перекрывающихся закладок.
Примечание. |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Для выполнения инструкций данного пошагового руководства необходимы указанные ниже компоненты.
Visual Studio Tools for Office (необязательный компонент Visual Studio 2008 Professional и Visual Studio Team System).
Microsoft Office Word 2003 или Microsoft Office Word 2007.
Visual Studio Tools for Office устанавливается по умолчанию с перечисленными версиями Visual Studio. Чтобы проверить, установлен ли данный пакет инструментов, см. раздел Установка средств Visual Studio для Office.
Создание проекта
Сначала следует создать проект документа Word в Visual Studio.
Создание нового проекта
Создайте проект документа Word с именем Мое контекстное меню закладок. Выберите в мастере Создать новый документ. Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Visual Studio Tools for Office.
Visual Studio откроет новый документ Word в режиме конструктора и добавит проект Мое контекстное меню закладок в Обозреватель решений.
Добавление текста и закладок в документ
Добавьте текст в документ, а затем добавьте 2 перекрывающиеся закладки.
Добавление текста в документ
Введите следующий текст.
Это пример создания контекстного меню, появляющегося при щелчке правой кнопкой мыши текста закладки.
Добавление элемента управления "Закладка" в документ
Из закладки Элементы управления Word объекта Панель элементов перетащите элемент управления Bookmark в документ.
Откроется диалоговое окно Добавление элемента управления "Закладка".
Выберите параметр создавать контекстное меню при нажатии текста правой кнопкой мыши и нажмите кнопку OК.
В документ добавляется bookmark1.
Добавьте другой элемент управления Bookmark к параметру щелкнуть текст в закладке правой кнопкой мыши.
В документ добавляется bookmark2.
Примечание. Слова щелкнуть текст правой кнопкой мыши находятся в bookmark1 и bookmark2.
При добавлении закладки к документу во время разработки создается элемент управления Bookmark. Можно запрограммировать несколько событий в закладке. Можно записать код в событие BeforeRightClick закладки, чтобы при нажатии пользователем правой кнопкой мыши текста в закладке появлялось контекстное меню.
Создание контекстного меню
Создание контекстного меню
Правой кнопкой мыши щелкните ThisDocument в Обозревателе решений, а затем нажмите Просмотреть код.
Объявите переменные CommandBar и переменные закладки на уровне класса.
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;
Добавьте метод для создания меню.
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; }
Вызовите AddPopup из события Startup документа 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(); }
Форматирование текста в закладке
Добавьте обработчик событий ButtonClick, чтобы применить форматирование к закладке.
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; } } }
Добавьте обработчик событий showPopupMenu для обработки события BeforeRightClick обеих закладок.
Примечание. Для работы с перекрывающимися закладками необходимо записать код. В противном случае по умолчанию код будет вызван для всех выбранных закладок.
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++) { object o = i; if (e.Selection.Bookmarks.get_Item(ref o).Start > startPosition) { startPosition = e.Selection.Bookmarks.get_Item(ref o).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; } }
В C# также необходимо добавить обработчики событий для элементов управления закладки в событие Startup. Дополнительные сведения о создании обработчиков событий см. в разделе Практическое руководство. Создание обработчиков событий в пакете инструментов Visual Studio для Office.
this.bookmark1.BeforeRightClick += new Microsoft.Office.Tools.Word. ClickEventHandler(showPopupMenu); this.bookmark2.BeforeRightClick += new Microsoft.Office.Tools.Word. ClickEventHandler(showPopupMenu);
Проверка работы приложения
Проверьте документ, чтобы убедиться в том, что элементы управления для полужирного шрифта и курсива отображаются при нажатии текста в закладке правой кнопкой мыши, а также что текст должным образом отформатирован.
Проверка документа
Нажмите клавишу F5 для запуска проекта.
Щелкните правой кнопкой мыши в первой закладке и выберите Полужирный.
Убедитесь в том, чтобы весь текст в bookmark1 был отформатирован полужирным шрифтом.
Щелкните правой кнопкой мыши текст в том месте, где закладки перекрывают друг друга, и выберите Курсив.
Убедитесь в том, что курсивом отображается весь текст в bookmark2 и только часть текста в bookmark1, перекрывающей bookmark2.
Следующие действия
Далее будут рассмотрены следующие задачи:
Написание кода для реагирования на события элементов управления ведущего приложения в Excel. Дополнительные сведения см. в разделе Пошаговое руководство. Программирование реакции на события элементов управления NamedRange.
Использование флажка для изменения форматирования в закладке. Дополнительные сведения см. в разделе Пошаговое руководство. Изменение форматирования документа с использованием элементов управления CheckBox.
См. также
Основные понятия
Пошаговые руководства с использованием Word
Настройка пользовательского интерфейса Office
Общие сведения о необязательных параметрах в решениях Office