演练:使用文档级自定义项创建智能标记

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

Microsoft Office 版本

  • Word 2003

  • Word 2007

有关更多信息,请参见按应用程序和项目类型提供的功能

此演练演示如何在 Word 的文档级自定义项中创建智能标记。此智能标记可识别华氏温度字符串。该智能标记包括一项操作,可以将温度值转换为摄氏温度,并用已格式化的摄氏温度字符串替换所识别的文本。

若要运行此智能标记,最终用户必须在 Word 中启用智能标记。有关更多信息,请参见如何:在 Word 和 Excel 中启用智能标记

本演练阐释以下任务:

  • 创建可识别正则表达式的智能标记。

  • 创建可从智能标记检索数据并修改所识别的智能标记文本的操作。

ms268701.alert_note(zh-cn,VS.90).gif说明:

以下说明中的某些 Visual Studio 用户界面元素在计算机上出现的名称或位置可能会不同。您安装的 Visual Studio 版本以及使用的设置决定了这些元素。有关更多信息,请参见 Visual Studio 设置

先决条件

您需要以下组件来完成本演练:

  • Visual Studio Tools for Office(Visual Studio 2008 专业版 和 Visual Studio Team System 的可选组件)。

  • Microsoft Office Word 2003 或 Microsoft Office Word 2007。

默认情况下,Visual Studio Tools for Office 随列出的 Visual Studio 版本一起安装。若要检查它是否已安装,请参见安装 Visual Studio Tools for Office

创建新项目

第一步是创建 Word 文档项目。

创建新项目

Visual Studio 在设计器中打开新的 Word 文档,并将“我的智能标记”项目添加到“解决方案资源管理器”中。

配置项目

该项目需要引用智能标记 DLL,还需要使用正则表达式。

配置项目

  1. 在“项目”菜单上单击“添加引用”。

  2. 在“COM”选项卡上,选择“Microsoft Smart Tags 2.0 类型库”[Microsoft Smart Tags 2.0 Type Library],并单击“确定”。

  3. 在“解决方案资源管理器”中,右击 ThisDocument.vb (Visual Basic) 或 ThisDocument.cs (C#),然后单击“查看代码”。

  4. 将以下代码行添加到文件顶部。

     [Visual Basic]
    Imports System.Text.RegularExpressions
    
    using System.Text.RegularExpressions;
    

创建智能标记

为了使智能标记能够找到并转换华氏温度字符串,请向智能标记识别的术语列表中添加一个正则表达式,并创建一项在用户单击智能标记时可以使用的操作。

创建智能标记

  1. 使用下面的代码替换 ThisDocument 类中的 ThisDocument_Startup 事件处理程序。此代码创建一个表示 Visual Studio Tools for Office 智能标记的 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
    
        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)
    {
        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 表示用户可在智能标记菜单上单击的项。

    action1 = New Microsoft.Office.Tools.Word.Action( _
        "Convert to Celsius")
    
    smartTag1.Actions = _
        New Microsoft.Office.Tools.Word.Action() {action1}
    
    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 标识通过为智能标记分配的正则表达式捕获的组。有关 Visual Studio Tools for Office 智能标记中的属性包和正则表达式的更多信息,请参见智能标记的结构

创建事件处理程序

  • 将下面的代码复制到 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。

    ms268701.alert_note(zh-cn,VS.90).gif说明:

    若要键入度数符号 (°),请按住 Alt 并键入 248。

  4. 单击出现在识别的字符串上方的智能标记图标,然后单击“Convert to Celsius”。

  5. 确认原始字符串已替换为包含摄氏温度的新字符串。

请参见

任务

如何:在 Word 和 Excel 中启用智能标记

如何:向 Word 文档添加智能标记

如何:向 Excel 工作簿添加智能标记

如何:在 Word 中创建具有自定义识别器的智能标记

如何:在 Excel 中创建具有自定义识别器的智能标记

演练:使用应用程序级外接程序创建智能标记

概念

智能标记概述

智能标记的结构