先看看“智能标签”在WIKI上的定义:“智能标签”,英文称为Smart Tag,是一种在 Microsoft Word 97 开始出现的一种协助工具,它会在特定的区块中显示一个小符号(大多数为 "!" 的小图标),当用户将鼠标指针移上去时,可以看到一个快显菜单 (Context Menu),方便用户可以运行特定工作,目前已广泛使用在 Microsoft Office 与 Internet Explorer 产品,而 Visual Studio 2005 开始,也在设计工具中激活了智能标签的支持。作者: faunus 时间: 2014-2-21 14:10
二、“智能标签”的实现原理
Smart Tag 是由 Microsoft Office 中的 “Microsoft Office Smart Tag Library”(MOSTL) 库开放的一组 API 所开发出来的,它使用了以下两个主要的接口:
1、ISmartTagRecognizer接口:
描述来自 Microsoft Office 文件中的特定文字,当指定的文字出现时,即会引导对应的 ISmartTagAction 接口中的方法。
2、ISmartTagAction接口:
接收来自于 ISmartTagRecognizer 的指令,以运行特定的动作。
MOSTL 是一种支持 COM Automation 的接口组件,可以利用像 Visual Basic 6.0 或 C/C++ 或 .NET 编程语言(C# 或 VB.NET)来开发自定义的“智能标签”。 作者: faunus 时间: 2014-2-21 14:11
三、“智能标签”在office2010中的重大变化
1、ctiveDocs™
提供智能标记解决方案,以便您创建自己的 Microsoft Word 智能标记,不必离开文档即可访问所需的信息。您还可以连接到外部数据源,以节省大量时间并提高工作效率 - 不必进行任何编程!
2、DataPortal™
智能标记加载项使 Office 用户能够轻松创建并共享智能标记。使用 DataPortal 向导创建链接到任何企业数据库的智能标记的过程不太复杂,单击几下即可完成。使用 DataPortal 智能标记,用户可在 Microsoft Word 或 Microsoft Outlook® 电子邮件中快速插入、显示或使用信息。DataPortal 使您的 Microsoft Office 成为访问您组织信息的门户:吸引人,智能程度高,协作性强,并且效率高。
3、Avery® Edition of ProWrite™
使您能够在 Outlook® 内创建标签。只需突出显示一个或多个您的联系人,然后从工具栏启动 ProWrite - Labels,并选择您要设置其格式的 Avery 产品,再在 Microsoft Word 内进行打印。就这么简单快捷!而且是免费的。提供的 Avery 产品超过 100 个,使用它们,您可以创建邮件和档案标签、徽章等等。试用 ProWrite 智能标记。
代码一:CustomSmartTag.cs
using System;
using System.Windows.Forms;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Interop.SmartTag;
namespace Trin_ExcelDerivedSmartTags
{
public class CustomSmartTag : SmartTag
{
//TO DO
}
}
4、在新建的类中,创建智能标记的操作。操作是指显示在智能标记菜单中的项。
在启动事件中,添加代码。
代码二:ThisAddIn.cs
// Declare Actions for this SmartTag
Action Action1 = new Action("Display property value");
Action Action2 = new Action("Display smart tag details");
public CustomSmartTag() : base("http://vsto.5d6d.com/#DemoSmartTag", "我的智能标签")
{
this.Terms.AddRange(new string[] { "潘淳", "陈国良","mye.cn" });
Actions = new Action[] { Action1, Action2 };
Action1.Click += new ActionClickEventHandler(Action1_Click);
Action2.Click += new ActionClickEventHandler(Action2_Click);
}
代码三:CustomSmartTag .cs
protected override void Recognize(string text, ISmartTagRecognizerSite site, ISmartTagTokenList tokenList)
{
// Determine whether each smart tag term exists in
// the document text.
foreach (string term in this.Terms)
{
// Search the cell text for the first instance of
// the current smart tag term.
int index = this.CellText.IndexOf(term, 0);
if (index >= 0)
{
// Create a smart tag token and a property bag for the
// recognized term.
ISmartTagProperties propertyBag = site.GetNewPropertyBag();
// Write a new property value.
string key = "Key1";
propertyBag.Write(key, DateTime.Now.ToString());
// Attach the smart tag to the term in the document
this.PersistTag(propertyBag);
// This implementation only finds the first instance
// of a smart tag term in the cell.
break;
}
}
6、创建事件处理程序以响应所创建操作的 Click 事件。
代码四:CustomSmartTag .cs
// This action displays the property value for the term.
private void Action1_Click(object sender, ActionEventArgs e)
{
ISmartTagProperties propertyBag = e.Properties;
string key = "Key1";
MessageBox.Show("The corresponding value of " + key + " is: " + propertyBag.get_Read(key));
}
// This action displays smart tag details.
private void Action2_Click(object sender, ActionEventArgs e)
{
MessageBox.Show("The current smart tag caption is '" + this.Caption + "'. The current smart tag type is '" + this.SmartTagType + "'.");
}