Пошаговое руководство. Создание смарт-тега с помощью надстройки уровня приложения

Пошаговое руководство показывает, как создать смарт-тег уровня приложения, который можно использовать в любом открытом документе. Смарт-тег распознает мерные ложки в документе 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.

Создание нового проекта

Visual Studio добавляет проект "Мой смарт-тег рецепта" в Обозреватель решений.

Настройка проекта

Проект должен содержать ссылку на библиотеку DLL смарт-тега и использовать регулярные выражения.

Настройка проекта

  1. В меню Проект щелкните команду Добавить ссылку.

  2. На вкладке .NET выберите Microsoft.Office.Interop.SmartTag и нажмите кнопку ОК. Выберите версию сборки 12.0.0.0.

  3. В Обозревателе решений щелкните правой кнопкой мыши файл ThisDocument.vb (для Visual Basic) или ThisDocument.cs (для C#) и выберите в меню пункт Просмотреть код.

  4. Добавьте следующую строку в начало файла.

    Imports System.Text.RegularExpressions
    
    using System.Text.RegularExpressions;
    

Создание смарт-тега

Чтобы смарт-тег мог находить и преобразовывать измерения в ложках, добавьте регулярное выражение в список терминов, распознаваемых тегом, и создайте действие, которое станет доступным пользователю после щелчка смарт-тега.

Создание смарт-тега

  1. Замените обработчик событий 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"));
    
  2. Создайте новое действие 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 };
    
  3. Вложите смарт-тег в свойство 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)");
    }
    

Тестирование приложения

Теперь можно проверить документ, убеждаясь, что смарт-тег преобразует измерения в ложках в унции.

Проверка рабочей книги

  1. Необходимо включить поддержку смарт-тегов в Word.

    Дополнительные сведения см. в разделе Практическое руководство. Разрешение смарт-тегов в Word и Excel.

  2. Нажмите клавишу F5 для запуска проекта.

  3. В документе Word наберите 1 столовая ложка соли.

  4. Щелкните значок смарт-тега, который отображается над 1 столовая ложка, и затем выберите пункт меню Convert to ounces (Преобразовать в унции).

  5. Убедитесь, что после количества в ложках вставлен эквивалент в унциях.

См. также

Задачи

Практическое руководство. Разрешение смарт-тегов в Word и Excel

Практическое руководство. Добавление смарт-тегов в документы Word

Практическое руководство. Добавление смарт-тегов в книги Excel

Практическое руководство. Создание смарт-тегов с настраиваемыми распознавателями в Word и .NET Framework 3.5

Практическое руководство. Создание смарт-тегов с настраиваемыми распознавателями в Excel и .NET Framework 3.5

Пошаговое руководство. Создание смарт-тега с помощью настройки уровня документа

Основные понятия

Архитектура смарт-тегов

Другие ресурсы

Общие сведения о смарт-тегах