更新:2007 年 11 月
| 适用对象 | 
|---|
| 本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型 
 Microsoft Office 版本 
 有关更多信息,请参见按应用程序和项目类型提供的功能。 | 
此演练演示如何在 Word 的文档级自定义项中创建智能标记。此智能标记可识别华氏温度字符串。该智能标记包括一项操作,可以将温度值转换为摄氏温度,并用已格式化的摄氏温度字符串替换所识别的文本。
若要运行此智能标记,最终用户必须在 Word 中启用智能标记。有关更多信息,请参见如何:在 Word 和 Excel 中启用智能标记。
本演练阐释以下任务:
- 创建可识别正则表达式的智能标记。 
- 创建可从智能标记检索数据并修改所识别的智能标记文本的操作。 
| .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 Basic 或 C# 创建名为“我的智能标记”的 Word 文档项目。在向导中,选择“创建新文档”。 - 有关更多信息,请参见如何:创建 Visual Studio Tools for Office 项目。 
Visual Studio 在设计器中打开新的 Word 文档,并将“我的智能标记”项目添加到“解决方案资源管理器”中。
配置项目
该项目需要引用智能标记 DLL,还需要使用正则表达式。
配置项目
- 在“项目”菜单上单击“添加引用”。 
- 在“COM”选项卡上,选择“Microsoft Smart Tags 2.0 类型库”[Microsoft Smart Tags 2.0 Type Library],并单击“确定”。 
- 在“解决方案资源管理器”中,右击 ThisDocument.vb (Visual Basic) 或 ThisDocument.cs (C#),然后单击“查看代码”。 
- 将以下代码行添加到文件顶部。 - [Visual Basic] Imports System.Text.RegularExpressions- using System.Text.RegularExpressions;
创建智能标记
为了使智能标记能够找到并转换华氏温度字符串,请向智能标记识别的术语列表中添加一个正则表达式,并创建一项在用户单击智能标记时可以使用的操作。
创建智能标记
- 使用下面的代码替换 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"));
- 创建一个新的 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};
- 通过将 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"; }
测试应用程序
现在可以测试文档,以确保智能标记将华氏温度转换为摄氏温度。
测试工作簿
- 在 Word 中,启用智能标记。 - 有关更多信息,请参见如何:在 Word 和 Excel 中启用智能标记。 
- 按 F5 运行项目。 
- 键入符合向智能标记添加的正则表达式的字符串,例如 60F、60° F 或 60 F。 .gif) 说明: 说明:- 若要键入度数符号 (°),请按住 Alt 并键入 248。 
- 单击出现在识别的字符串上方的智能标记图标,然后单击“Convert to Celsius”。 
- 确认原始字符串已替换为包含摄氏温度的新字符串。