Пошаговое руководство. Создание смарт-тега с помощью надстройки уровня приложения
Пошаговое руководство показывает, как создать смарт-тег уровня приложения, который можно использовать в любом открытом документе. Смарт-тег распознает мерные ложки в документе Microsoft Office Word и обеспечивает действие, преобразующее соответствующее значение в унции. Он добавляет эквивалентное значение унций после значения в мерных ложках.
Применение. Сведения этого раздела применяются к проектам уровня приложения для Word 2007. Дополнительные сведения см. в разделе Доступность функций по типам приложений Office и проектов.
Чтобы обеспечить работу смарт-тега, конечные пользователи должны включить поддержку смарт-тегов в приложении Word. Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.
В данном пошаговом руководстве рассмотрены следующие задачи:
Создание смарт-тега, использующего регулярное выражения для распознавания строк.
Создание действия, которое извлекает данные из смарт-тега и модифицирует распознанный смарт-тегом текст.
Примечание
На компьютере могут отображаться имена или расположения некоторых элементов пользовательского интерфейса Visual Studio, отличающиеся от указанных в дальнейших инструкциях.Эти элементы определяются используемой версией Visual Studio и ее параметрами.Дополнительные сведения см. в разделе Работа с параметрами.
Обязательные компоненты
Ниже приведены компоненты, необходимые для выполнения данного пошагового руководства.
-
Выпуск Visual Studio 2010, включающий средства разработки Microsoft Office. Дополнительные сведения см. в разделе [Настройка компьютера для разработки решений Office](https://msdn.microsoft.com/ru-ru/library/bb398242\(v=vs.100\)).
Word 2007.
Платформа .NET Framework 3.5.
Примечание
В случае платформы .NET Framework 4 необходимо написать другой код для создания смарт-тегов и действий.Дополнительные сведения см. в разделе Архитектура смарт-тегов.
Создание нового проекта
Для начала следует создать проект надстройки Word.
Создание нового проекта
Создайте проект надстройки Word 2007 с именем "Мой смарт-тег рецепта" в Visual Basic или C#.
Дополнительные сведения см. в разделе Практическое руководство. Создание проектов Office в Visual Studio.
Visual Studio добавляет проект "Мой смарт-тег рецепта" в Обозреватель решений.
Настройка проекта
Проект должен содержать ссылку на библиотеку DLL смарт-тега и использовать регулярные выражения.
Настройка проекта
В меню Проект щелкните команду Добавить ссылку.
На вкладке .NET выберите Microsoft.Office.Interop.SmartTag и нажмите кнопку ОК. Выберите версию сборки 12.0.0.0.
В Обозревателе решений щелкните правой кнопкой мыши файл ThisDocument.vb (для Visual Basic) или ThisDocument.cs (для C#) и выберите в меню пункт Просмотреть код.
Добавьте следующую строку в начало файла.
Imports System.Text.RegularExpressions
using System.Text.RegularExpressions;
Создание смарт-тега
Чтобы смарт-тег мог находить и преобразовывать измерения в ложках, добавьте регулярное выражение в список терминов, распознаваемых тегом, и создайте действие, которое станет доступным пользователю после щелчка смарт-тега.
Создание смарт-тега
Замените обработчик событий ThisAddIn_Startup класса ThisAddIn следующим кодом. Этот код создает объект SmartTag, представляющий смарт-тег, и добавляет регулярное выражение к списку терминов, распознаваемых смарт-тегом.
WithEvents RecipeAction As Microsoft.Office.Tools.Word.Action Private Sub ThisAddIn_Startup(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Startup Dim SmartTagDemo As New Microsoft.Office.Tools.Word.SmartTag( _ "www.microsoft.com/Demo#DemoSmartTag", "Recipe Smart Tag") SmartTagDemo.Expressions.Add(New Regex( _ "(?'tbsNumber'[+-]?\b[0-9]+)?\s?(tbs|tablespoons|tablespoon)\b"))
private Microsoft.Office.Tools.Word.Action RecipeAction; private void ThisAddIn_Startup(object sender, System.EventArgs e) { Microsoft.Office.Tools.Word.SmartTag SmartTagDemo = new Microsoft.Office.Tools.Word.SmartTag( @"www.microsoft.com/Demo#DemoSmartTag", @"Recipe Smart Tag"); // Specify the terms to recognize. SmartTagDemo.Expressions.Add(new Regex( @"(?'tbsNumber'[+-]?\b[0-9]+)?\s?(tbs|tablespoons|tablespoon)\b"));
Создайте новое действие Action и добавьте его к свойству Actions смарт-тега. Действие Action представляет собой элемент, который пользователь может выбрать в меню смарт-тега.
RecipeAction = New Microsoft.Office.Tools.Word.Action("Convert to ounces") SmartTagDemo.Actions = New Microsoft.Office.Tools.Word.Action() {RecipeAction}
RecipeAction = new Microsoft.Office.Tools.Word.Action( @"Convert to ounces"); // Add the action to the smart tag. SmartTagDemo.Actions = new Microsoft.Office.Tools.Word.Action[] { RecipeAction };
Вложите смарт-тег в свойство VstoSmartTags класса ThisAddIn. В C# присоедините обработчик событий к событию Click действия.
Me.VstoSmartTags.Add(SmartTagDemo) End Sub
// Add the smart tag to the document. this.VstoSmartTags.Add(SmartTagDemo); RecipeAction.Click += new Microsoft.Office.Tools.Word.ActionClickEventHandler( RecipeAction_Click); }
Создание обработчика событий для действия
Обработчик событий извлекает значение в мерных ложках, используя ключ tbsNumber, который находится в контейнере свойств смарт-тега. Затем обработчик событий преобразует количество мерных ложек в унции и вставляет значение унций в скобках после значения в мерных ложках.
В этом примере ключ tbsNumber идентифицирует захваченную группу из регулярного выражения, назначенного смарт-тегу. Дополнительные сведения о контейнерах свойств и регулярных выражениях в смарт-тегах см. в разделе Архитектура смарт-тегов.
Создание обработчика событий
Скопируйте в класс ThisAddIn следующий код.
Private Sub RecipeAction_Click(ByVal sender As Object, _ ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _ Handles RecipeAction.Click Dim value As String = e.Properties.Read("tbsNumber") Dim tbsRecipeAmount As Double = System.Convert.ToDouble(value) Dim ozRecipeAmount As Double = tbsRecipeAmount * 0.5 e.Range.InsertAfter(" (" + ozRecipeAmount.ToString() + " oz)") End Sub
private void RecipeAction_Click(object sender, Microsoft.Office.Tools.Word.ActionEventArgs e) { string value = e.Properties.get_Read(@"tbsNumber"); double tbsRecipeAmount = System.Convert.ToDouble(value); double ozRecipeAmount = tbsRecipeAmount * 0.5; e.Range.InsertAfter(" (" + ozRecipeAmount.ToString() + " oz)"); }
Тестирование приложения
Теперь можно проверить документ, убеждаясь, что смарт-тег преобразует измерения в ложках в унции.
Проверка рабочей книги
Необходимо включить поддержку смарт-тегов в Word.
Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.
Нажмите клавишу F5 для запуска проекта.
В документе Word наберите 1 столовая ложка соли.
Щелкните значок смарт-тега, который отображается над 1 столовая ложка, и затем выберите пункт меню Convert to ounces (Преобразовать в унции).
Убедитесь, что после количества в ложках вставлен эквивалент в унциях.
См. также
Задачи
Практическое руководство. Разрешение смарт-тегов в Word и Excel
Практическое руководство. Добавление смарт-тегов в документы Word
Практическое руководство. Добавление смарт-тегов в книги Excel
Пошаговое руководство. Создание смарт-тега с помощью настройки уровня документа