SmartTag Класс (2007 System)
Обновлен: Ноябрь 2007
Представляет смарт-тег в настройке уровня документа для приложения Microsoft Office Word.
Пространство имен: Microsoft.Office.Tools.Word
Сборка: Microsoft.Office.Tools.Word.v9.0 (в Microsoft.Office.Tools.Word.v9.0.dll)
Синтаксис
'Декларация
<PermissionSetAttribute(SecurityAction.Demand, Name := "FullTrust")> _
Public Class SmartTag _
Inherits SmartTagBase
'Применение
Dim instance As SmartTag
[PermissionSetAttribute(SecurityAction.Demand, Name = "FullTrust")]
public class SmartTag : SmartTagBase
Заметки
Класс SmartTag является реализацией абстрактного класса SmartTagBase для смарт-тегов в документах Word. Дополнительные сведения о смарт-тегах в решениях Visual Studio Tools for Office см. в разделе Архитектура смарт-тега.
Примеры
В приведенном ниже примере кода демонстрируется создание собственного пользовательского класса смарт-тега, производным от класса SmartTag. В этом примере переопределяется метод Recognize, предназначенный для распознавания каждого найденного в абзаце выражения смарт-тега. В данном примере предполагается, что была добавлена ссылка на библиотеку типов Microsoft Smart Tags 2.0 на вкладке COM диалогового окна Добавление ссылки. Пример кода, в котором используется реализация класса SmartTag по умолчанию, см. в описании класса Action.
Imports Microsoft.Office.Tools.Word
Imports Microsoft.Office.Interop.SmartTag
Public Class CustomSmartTag
Inherits SmartTag
' Declare Actions for this SmartTag
WithEvents Action1 As New Action("Display property value")
WithEvents Action2 As New Action("Display smart tag details")
Public Sub New()
MyBase.New("https://www.contoso.com/Demo#DemoSmartTag", _
"Custom Smart Tag")
Me.Terms.AddRange(New String() {"sales", "organization"})
Actions = New Action() {Action1, Action2}
End Sub
Protected Overrides Sub Recognize(ByVal text As String, _
ByVal site As ISmartTagRecognizerSite, _
ByVal tokenList As ISmartTagTokenList)
' Determine whether each smart tag term exists in
' the document text.
Dim Term As String
For Each Term In Me.Terms
' Search the text for the current smart tag term.
Dim index As Integer = Me.ParagraphText.IndexOf(Term, 0)
While (index >= 0)
' Create a smart tag token and a property bag for the
' recognized term.
Dim propertyBag As ISmartTagProperties = _
site.GetNewPropertyBag()
' Write a new property value.
Dim key As String = "Key1"
propertyBag.Write(key, DateTime.Now)
' Attach the smart tag to the term in the document
Me.PersistTag(index, Term.Length, propertyBag)
' Increment the index and then find the next
' instance of the smart tag term.
index += Term.Length
index = ParagraphText.IndexOf(Term, index)
End While
Next
End Sub
' This action displays the property value for the term.
Private Sub Action1_Click(ByVal sender As Object, _
ByVal e As ActionEventArgs) Handles Action1.Click
Dim propertyBag As ISmartTagProperties = e.Properties
Dim key As String = "Key1"
MsgBox("The corresponding value of " & _
key & " is: " & propertyBag.Read(key))
End Sub
' This action displays smart tag details.
Private Sub Action2_Click(ByVal sender As Object, _
ByVal e As ActionEventArgs) Handles Action2.Click
MsgBox("The current smart tag caption is '" & _
Me.Caption & "'. The current smart tag type is '" & _
Me.SmartTagType & "'.")
End Sub
End Class
using System;
using System.Windows.Forms;
using Microsoft.Office.Tools.Word;
using Microsoft.Office.Interop.SmartTag;
public class CustomSmartTag : Microsoft.Office.Tools.Word.SmartTag
{
// Declare Actions for this SmartTag
private Microsoft.Office.Tools.Word.Action Action1 =
new Microsoft.Office.Tools.Word.Action("Display property value");
private Microsoft.Office.Tools.Word.Action Action2 =
new Microsoft.Office.Tools.Word.Action("Display smart tag details");
public CustomSmartTag() : base(
"https://www.contoso.com/Demo#DemoSmartTag",
"Custom Smart Tag")
{
this.Terms.AddRange(new string[] {
"sales", "organization" });
Actions = new Microsoft.Office.Tools.Word.Action[] {
Action1, Action2 };
Action1.Click +=
new ActionClickEventHandler(Action1_Click);
Action2.Click +=
new ActionClickEventHandler(Action2_Click);
}
protected override void Recognize(string text,
ISmartTagRecognizerSite site, ISmartTagTokenList tokenList)
{
foreach (string term in this.Terms)
{
// Search the text for the current smart tag term.
int index = this.ParagraphText.IndexOf(term, 0);
while (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(index, term.Length, propertyBag);
// Increment the index and then find the next
// instance of the smart tag term.
index += term.Length;
index = ParagraphText.IndexOf(term, index);
}
}
}
// This action displays the property value for the term.
private void Action1_Click(object sender,
Microsoft.Office.Tools.Word.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,
Microsoft.Office.Tools.Word.ActionEventArgs e)
{
MessageBox.Show("The current smart tag caption is '" +
this.Caption + "'. The current smart tag type is '" +
this.SmartTagType + "'.");
}
}
Иерархия наследования
System.Object
Microsoft.Office.Tools.SmartTagBase
Microsoft.Office.Tools.Word.SmartTag
Потокобезопасность
Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
См. также
Ссылки
Microsoft.Office.Tools.Word - пространство имен
Другие ресурсы
Практическое руководство. Добавление смарт-тегов в документы Word
Практическое руководство. Создание в приложении Word смарт-тегов с настраиваемыми распознавателями
Пошаговое руководство. Создание смарт-тега с помощью настройки уровня документа.