演练:使用文档级自定义项创建智能标记
更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
此演练演示如何在 Word 的文档级自定义项中创建智能标记。此智能标记可识别华氏温度字符串。该智能标记包括一项操作,可以将温度值转换为摄氏温度,并用已格式化的摄氏温度字符串替换所识别的文本。
若要运行此智能标记,最终用户必须在 Word 中启用智能标记。有关更多信息,请参见如何:在 Word 和 Excel 中启用智能标记。
本演练阐释以下任务:
创建可识别正则表达式的智能标记。
创建可从智能标记检索数据并修改所识别的智能标记文本的操作。
说明: |
---|
以下说明中的某些 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。
说明: 若要键入度数符号 (°),请按住 Alt 并键入 248。
单击出现在识别的字符串上方的智能标记图标,然后单击“Convert to Celsius”。
确认原始字符串已替换为包含摄氏温度的新字符串。