مشاركة عبر


كيفية القيام بما يلي: إنشاء علامات ذكية بأدوات تعرف مخصصة في Word و .NET Framework 3.5

ينطبق على

تنطبق المعلومات الموجودة في هذا الموضوع فقط على أنواع المشاريع وإصدارات Microsoft Office التالية: لمزيد من المعلومات، راجع الميزات المتوفرة بواسطة تطبيقات Office و نوع المشروع.

نوع المشروع

  • مشروعات على مستوى المستند

  • مشروعات على مستوى التطبيق

إصدار Microsoft Office

  • Word 2007

في مشاريع Word التي تستهدف 3.5 .NET Framework ، يمكنك التحكم في كيفية تعرف Word على العلامات الذكية في المستندات عن طريق الاشتقاق من الفئة Microsoft.Office.Tools.Word.SmartTag "و" تجاوز الأسلوب Recognize .

لتشغيل علامة ذكية ، يجب على المستخدمين تمكين العلامات الذكية. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تمكين العلامات الذكية في Word وExcel.

ارتباط إلى فيديوللحصول على نسخة فيديو هذا موضوع، راجع هل I: كيف إنشاء علامات ذكية في Word. للحصول على عرض فيديو توضيحي ذي صلة، راجع كيف يمكنني القيام بما يلي: استخدام العلامات الذكية في Microsoft Word ؟.

لإضافة علامة ذكية بأداة تعرٌّف مخصصة إلى مستند Word

  1. إنشاء المستوى المستندات أو المستوى تطبيق مشروع جديد لبرنامج الكلمة 2007. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء مشاريع Office في Visual Studio.

  2. قم بإضافة مرجع إلى تجميع Microsoft.المكتب.Interop.SmartTag (الإصدار 12.0.0.0) من علامة تبويب .NET إضافة مرجع الخاصة صندوق حوار.

  3. قم بإضافة ملف فئة إلى المشروع وقم بإنشاء فئة ترث من Microsoft.Office.Tools.Word.SmartTag.

  4. في الفئة الجديدة ، قم بإنشاء الإجراءات للعلامات الذكية. الإجراءات هي العناصر التي تظهر على قائمة العلامات الذكية. قم بإنشاء إجراءات بإضافة مثيلات من نوع Action إلى مجموعة الفئة الخاصة بك Actions .

  5. تجاوز الأسلوب SmartTagBase.Recognize لتنفيذ سلوك التعرف المخصص الخاص بك .

    تجاوزك للأسلوب Recognize يجب أن يستدعي الأسلوب Microsoft.Office.Tools.Word.SmartTag.PersistTag لجعل Word يتعرف على العلامة الذكية.

  6. قم بإنشاء معالجات الأحداث للاستجابة للحدث Click ، واختيارياً الحدث BeforeCaptionShow من الإجراءات التي قمت بإنشائها.

  7. في ملف التعليمات البرمجية في مستند المشروع، قم بإضافة مثيل علامة ذكية إلى الخاصية VstoSmartTags من الفئة ThisDocument (لمشروع على مستوى المستند)، أو الخاصية VstoSmartTags من الفئة ThisAddIn (لمشروع على مستوى التطبيق).

مثال

يظهر مثال التعليمات البرمجية التالي كيفية إنشاء علامة ذكية مخصصة في مستند Word. المثال يتجاوز الأسلوب Recognize للتعرف على المصطلحات sales و organization. الأسلوب Recognize يقوم بإضافة زوج من قيمة و مفتاح إلى مجموعة الخصائص ذات المفاتيح للعلامة الذكية. ثم يقوم الأسلوب باستدعاء أسلوب PersistTag للتعرف على العلامات الذكية وحفظ خصائص العلامات الذكية الجديدة .

لاختبار المثال اكتب الكلمات sales(المبيعات) و organization (المؤسسة) في أماكن مختلفة في المستند وجرب بعدها إجراءات العلامات الذكية. أحد الإجراءات يعرض قيمة الخاصية المطابقة للمصطلح المعرف و إجراء آخر يعرض مساحة اسم العلامة الذكية و التسمية التوضيحية.

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 + "'.");
    }
}

التحويل البرمجي للتعليمات البرمجية

  • قم بإضافة مرجع في المشروع إلى Microsoft Smart Tags 2.0 Type Library من علامة التبويب COM فى مربع الحوار إضافة مرجع . تأكد من إن خاصية النسخ المحلي (Copy local) للمرجع قيمتها false. إذا كانت true ، إذاً فالمرجع لا يشير إلى تجميع التوافق الأساسي الصحيح ويجب عليك أن تقوم بتثبيت التجميع من وسائط تثبيت Microsoft Office . لمزيد من المعلومات، راجع كيفية القيام بما يلي: تثبيت تجميعات توافق Office أساسية.

  • ضع مثال التعليمات البرمجية في ملف فئة جديد باسم CustomSmartTag.

  • في C# ، قم بتغيير مساحة الاسم لتطابق اسم المشروع.

  • قم بإضافة عبارات Imports (في Visual Basic) أو using (في C#) لمساحات الأسماء Microsoft.Office.Tools.Word و Microsoft.Office.Interop.SmartTag في أعلى ملف الفئة.

  • قم بإضافة التعليمات البرمجية التالية إلى معالج الحدث ThisDocument_Startup أو ThisAddIn_Startup في المشروع الخاص بك. تعمل هذه التعليمة البرمجية على إضافة علامة ذكية مخصصة إلى المستند .

    Me.VstoSmartTags.Add(New CustomSmartTag())
    
    this.VstoSmartTags.Add(new CustomSmartTag());
    

أمان

لتشغيل العلامات الذكية ، يجب تمكين العلامات الذكية في Word. لمزيد من المعلومات، راجع كيفية القيام بما يلي: تمكين العلامات الذكية في Word وExcel.

راجع أيضًا:

المهام

كيفية القيام بما يلي: تمكين العلامات الذكية في Word وExcel

كيفية القيام بما يلي: إضافة العلامات الذكية إلى مستندات Word

كيفية القيام بما يلي: إضافة علامات ذكية إلى مصنفات Excel

كيفية القيام بما يلي: إنشاء علامات ذكية بأدوات تعرُّف مخصصة في Excel و .NET Framework 3.5

الإرشادات التفصيلية: إنشاء علامة ذكية باستخدام تخصيص على مستوى المستند

الإرشادات التفصيلية: إنشاء علامة ذكية عن طريق استخدام وظيفة إضافية على مستوى التطبيق

المبادئ

بنية العلامات الذكية

موارد أخرى

نظرة عامة على العلامات الذكية