Пошаговое руководство. Создание контекстного меню для закладок
Это пошаговое руководство демонстрирует, как создавать контекстные меню для элементов управления Bookmark в настройках на уровне документа для Word.Когда пользователь щелкает правой кнопкой мыши текст в закладке, появляется контекстное меню, содержащее параметры для форматирования текста.
Применение. Сведения этого раздела применяются к проектам уровня документа для Word 2013 и Word 2010. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание проекта.
Добавление текста и закладок в документ.
Добавление команд в контекстное меню.
Форматирование текста в закладке.
Примечание |
---|
На вашем компьютере названия некоторых элементов интерфейса пользователя Visual Studio или их расположение могут отличаться от указанных в нижеследующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Параметры Visual Studio. |
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
-
Выпуск Visual Studio 2012, включающий инструменты разработчика Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](bb398242\(v=vs.110\).md).
- Word 2013 или Word 2010
Создание проекта
Сначала следует создать проект документа Word в Visual Studio.
Создание нового проекта
Создайте проект документа Word с именем "Мое контекстное меню закладок".Выберите в мастере Создать новый документ.Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.
Visual Studio откроет новый документ Word в режиме конструктора и добавит проект Мое контекстное меню закладок в Обозреватель решений.
Добавление текста и закладок в документ
Добавьте текст в документ, а затем добавьте 2 перекрывающиеся закладки.
Добавление текста в документ
В документе, который отображается в конструкторе проекта, введите следующий текст.
Это пример создания контекстного меню, появляющегося при щелчке правой кнопкой мыши текста закладки.
Добавление элемента управления "Закладка" в документ
В Панель элементов из вкладки Элементы управления Word, перетащите элемент управления Bookmark в документ.
Откроется диалоговое окно Добавление элемента управления "Закладка".
Выберите слова "создание контекстного меню, когда вы щелкнули правой кнопкой мыши текст" и нажмите кнопку ОК.
В документ добавляется bookmark1.
Добавьте другой элемент управления Bookmark к словам "щелкните правой кнопкой мыши текст в закладке".
В документ добавляется bookmark2.
Примечание Слова "щелкните правой кнопкой мыши текст" как в bookmark1, так и в bookmark2.
При добавлении закладки к документу во время разработки создается элемент управления Bookmark.Можно запрограммировать несколько событий в закладке.Можно записать код в событие BeforeRightClick закладки, чтобы при нажатии пользователем правой кнопкой мыши текста в закладке появлялось контекстное меню.
Добавление команд в контекстное меню
Добавьте кнопки в контекстное меню, которое появляется при нажатии правой кнопкой мыши документ.
Добавление команд в контекстное меню
Добавьте элемент Xml-ленты в проект.Дополнительные сведения см. в разделе Практическое руководство. Работа с настройкой ленты.
В Обозреватель решений выберите ThisDocument.cs или ThisDocument.vb.
В строке меню выберите Вид, Код.
Файл класса ThisDocument открывается в редакторе кода.
Добавьте следующий код в класс ThisDocument.Этот код переопределяет метод CreateRibbonExtensibilityObject и возвращает класс XML-ленты приложению Office.
Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility Return New Ribbon1() End Function
protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() { return new Ribbon1(); }
В Обозреватель решений выберите XML-файл ленты.По умолчанию XML-файл ленты называется Ribbon1.xml.
В строке меню выберите Вид, Код.
Xml-файл ленты открывает в редакторе кода.
В редакторе кода замените содержимое XML-файла ленты со следующим кодом.
<?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>
Этот код добавляет 2 кнопки в контекстное меню, которое появляется при нажатии правой кнопкой мыши документ.
Правой кнопкой мыши щелкните ThisDocument в Обозревателе решений, а затем нажмите Просмотреть код.
Объявите следующие переменные и переменные закладки на уровне класса.
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;
В Обозреватель решений выберите файл кода ленты.По умолчанию файл кода ленты называется Ribbon1.cs или Ribbon1.vb.
В строке меню выберите Вид, Код.
В редакторе кода открывается файл кода ленты.
В файле кода ленты, добавьте следующий метод.Это - метод обратного вызова для кнопок 2, добавленных в контекстное меню документа.Этот метод определяет, отображаются ли эти кнопки в контекстное меню.Полужирного курсивного и кнопки отображаются только если щелкнуть правой кнопкой мыши текст в закладку.
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; } }
Форматирование текста в закладке
В файле кода ленты, добавьте обработчик событий ButtonClick, чтобы применить форматирование к закладке.
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; } } }
Обозреватель решений выберите ThisDocument.cs или ThisDocument.vb.
В строке меню выберите Вид, Код.
Файл класса ThisDocument открывается в редакторе кода.
Добавьте следующий код в класс ThisDocument.
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; } }
Примечание Для работы с перекрывающимися закладками необходимо записать код. В противном случае по умолчанию код будет вызван для всех выбранных закладок.
В C# также необходимо добавить обработчики событий для элементов управления закладки в событие Startup. Дополнительные сведения о создании обработчиков событий см. в разделе Практическое руководство. Создание обработчиков событий в проектах Office.
private void ThisDocument_Startup(object sender, System.EventArgs e) { this.bookmark1.BeforeRightClick += new ClickEventHandler(bookmark_BeforeRightClick); this.bookmark2.BeforeRightClick += new ClickEventHandler(bookmark_BeforeRightClick); }
Тестирование приложения
Проверьте свой документ, чтобы убедиться, что пунктов меню, полужирный и курсивный отображаются в контекстное меню, когда вы щелкнули правой кнопкой мыши текст в закладку и что текст форматироватьо правильно.
Проверка документа
Нажмите клавишу F5 для запуска проекта.
Щелкните правой кнопкой мыши в первой закладке и выберите Полужирный.
Убедитесь в том, чтобы весь текст в bookmark1 был отформатирован полужирным шрифтом.
Щелкните правой кнопкой мыши текст в том месте, где закладки перекрывают друг друга, и выберите Курсив.
Убедитесь в том, что курсивом отображается весь текст в bookmark2 и только часть текста в bookmark1, перекрывающей bookmark2.
Следующие действия
Далее будут рассмотрены следующие задачи:
Написание кода для реагирования на события элементов управления ведущего приложения в Excel.Дополнительные сведения см. в разделе Пошаговое руководство. Программирование реакции на события элементов управления NamedRange.
Использование флажка для изменения форматирования в закладке.Дополнительные сведения см. в разделе Пошаговое руководство. Изменение форматирования документа с использованием элементов управления CheckBox.
См. также
Основные понятия
Пошаговые руководства с использованием Word
Автоматизация Word с помощью расширенных объектов
Необязательные параметры в решениях Office