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

В этом пошаговом руководстве демонстрируется создание смарт-тега в настройке уровня документа для 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 откроет новый документ Word в режиме конструктора и добавит проект "Мой смарт-тег" в Обозреватель решений.

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

Проект должен содержать ссылку на библиотеку 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. Замените обработчик событий ThisDocument_Startup класса ThisDocument следующим кодом. Этот код создает объект SmartTag, представляющий смарт-тег, и добавляет регулярное выражение к списку терминов, распознаваемых смарт-тегом.

    WithEvents action1 As Microsoft.Office.Tools.Word.Action
    
    Private Sub ThisDocument_Startup(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Startup
    
        'Use the following line of code in projects that target the .NET Framework 4.
        Dim smartTag1 As Microsoft.Office.Tools.Word.SmartTag = _
            Globals.Factory.CreateSmartTag( _
           "www.microsoft.com/Demo#DemoSmartTag", _
           "Demonstration Smart Tag")
    
        'In projects that target the .NET Framework 3.5, use the following line of code.
        'Dim smartTag1 As New Microsoft.Office.Tools.Word.SmartTag( _
        '   "www.microsoft.com/Demo#DemoSmartTag", _
        '  "Demonstration Smart Tag")
    
        smartTag1.Expressions.Add( _
            New Regex("(?'number'[+-]?\b[0-9]+)?\s?(F|f)\b"))
    
    private Microsoft.Office.Tools.Word.Action action1;
    
    private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        // Use the following line of code in projects that target the .NET Framework 4.
        Microsoft.Office.Tools.Word.SmartTag smartTag1 =
            Globals.Factory.CreateSmartTag(
            "www.microsoft.com/Demo#DemoSmartTag",
            "Demonstration Smart Tag");
    
        // In projects that target the .NET Framework 3.5, use the following line of code.
        //Microsoft.Office.Tools.Word.SmartTag smartTag1 =
        //  new Microsoft.Office.Tools.Word.SmartTag(
        //  "www.microsoft.com/Demo#DemoSmartTag",
        //  "Demonstration Smart Tag");
    
        smartTag1.Expressions.Add(new Regex(
            @"(?'number'[+-]?\b[0-9]+)�?\s?(F|f)\b"));
    
  2. Создайте новое действие Action и добавьте его к свойству Actions смарт-тега. Действие Action представляет собой элемент, который пользователь может выбрать в меню смарт-тега.

    'Use the following line of code in projects that target the .NET Framework 4.
    action1 = Globals.Factory.CreateAction( _
        "Convert to Celsius")
    
    'In projects that target the .NET Framework 3.5, use the following line of code.
    'action1 = New Microsoft.Office.Tools.Word.Action( _
    '    "Convert to Celsius")
    
    smartTag1.Actions = _
        New Microsoft.Office.Tools.Word.Action() {action1}
    
    
    // Use the following line of code in projects that target the .NET Framework 4.
    action1 = Globals.Factory.CreateAction(
        "Convert to Celsius");
    
    // In projects that target the .NET Framework 3.5, use the following line of code.
    //action1 = new Microsoft.Office.Tools.Word.Action(
    //    "Convert to Celsius");
    
    
    
    smartTag1.Actions = new
        Microsoft.Office.Tools.Word.Action[] {action1};
    
  3. Присоедините смарт-тег к документу путем добавления SmartTag к свойству VstoSmartTags. В C# присоедините обработчик событий к событию Click действия.

        Me.VstoSmartTags.Add(smartTag1)
    End Sub
    
        this.VstoSmartTags.Add(smartTag1);
    
        action1.Click += new
            Microsoft.Office.Tools.Word.ActionClickEventHandler(
            action1_Click);
    }
    

Создание обработчика событий для действия

Обработчик событий извлекает значение температуры по шкале Фаренгейта, используя ключ number, который находится в контейнере свойств смарт-тега. Затем обработчик событий преобразует значение температуры по Фаренгейту в температуру по Цельсию и заменяет распознанную строку.

В этом примере ключ number идентифицирует захватывающую группу из регулярного выражения, назначенного смарт-тегу. Дополнительные сведения о контейнерах свойств и регулярных выражениях в смарт-тегах см. в разделе Архитектура смарт-тегов.

Создание обработчика событий

  • Скопируйте в класс ThisDocument следующий код.

    Private Sub action1_Click(ByVal sender As Object, _
        ByVal e As Microsoft.Office.Tools.Word.ActionEventArgs) _
        Handles action1.Click
    
        Dim value As String = e.Properties.Read("number")
        Dim fahrenheit As Double = System.Convert.ToDouble(value)
        Dim celsius As Integer = Fix(fahrenheit - 32) * 5 / 9
        e.Range.Text = celsius.ToString() + "C"
    End Sub
    
    void action1_Click(object sender,
        Microsoft.Office.Tools.Word.ActionEventArgs e)
    {
        string value = e.Properties.get_Read("number");
        double fahrenheit = System.Convert.ToDouble(value);
        int celsius = (int)(fahrenheit - 32) * 5 / 9;
        e.Range.Text = celsius.ToString() + "�C";
    }
    

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

Теперь можно проверить работу документа, чтобы убедиться, что смарт-тег преобразовывает температуру по шкале Фаренгейта в температуру по шкале Цельсия.

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

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

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

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

  3. Введите строку, которая соответствует регулярному выражению смарт-тега, например, 60F, 60° F или 60 F.

    Примечание

    Чтобы ввести символ градусов (°), нажмите и удерживайте клавишу ALT и наберите на цифровой клавиатуре 248.

  4. Щелкните значок смарт-тега, который отображается над распознанной строкой, и затем выберите пункт меню Convert to Celsius.

  5. Убедитесь, что исходная строка заменена на новую (т.е. на значение температуры по шкале Цельсия).

См. также

Задачи

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

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

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

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

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

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

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

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

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

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