كيفية القيام بما يلي: الاستجابة إلى أحداث مراجع ويب (‏‫#Visual C)

بيئة أحداث معينة إلى VSLangProjو VSLangProj80مشاريع تم تعريفها في #Visual Cو Visual Basic. VSLangProjWebReferencesEventsنوع جديد، فيVisual Studio 2005. تشغيل الحدث عند تمت الإضافة إلى مرجع ويب أو إزالتها منها أو عند ‏‏تاريخ التعديل خصائصه في أحد Visual Basicأو #Visual Cالمشروع.

يتصل هذا المثال بأساليب معالجة الحدث لمشروع معين باستخدام الخاصية #Visual C.

ملاحظة

قد تختلف مربعات الحوار وأوامر القائمة التى تشاهدها الان عن تلك الموصوفة في التعليمات اعتماداً على الإعدادات النشطة أو الإصدار الخاص بك. تم تطوير هذه الإجراءات من خلال "إعدادات تطوير عام" النشط. لتغيير الإعدادات الخاصة بك, اختر إعدادات الاستيراد و التصدير ضمن القائمة أدوات . لمزيد من المعلومات، راجع العمل مع إعدادات.

إلى مؤشر أحداث متعلقة بـ مراجع ويب باستخدام ‏‫#Visual C

  1. إنشاء Visual Studioالمشروع الوظيفة الإضافية في #Visual C.

  2. تشغيل القائمة مشروع، انقر فوق إضافة مرجع، انقر فوق علامة تبويب .NET تحديد VSLangProj VSLangProj2 VSLangProj80 ثم انقر فوق ‏‏موافق .

  3. إضافة using VSLangProj;إلى أعلى الملف يعيّن.vb.

  4. في الفئة يعيّن يهيّئ متغير إلى معالجة VSLangProjWebReferencesEventsالكائن.

    private DTE2 _applicationObject;
    private AddIn _addInInstance;
    private VSLangProj80.VSLangProjWebReferencesEvents webRefEvents;
    

    في هذا المثال، يسمى المتغير webRefEvents.

    أخرى الكائنات في طراز التنفيذ التلقائي ربطها إلى أنواع أخرى من الأحداث التي تحدث في المشروع. على سبيل المثال، ImportsEventsتشغيل الحدث عند إضافتها إلى استيراد أو إزالتها من Importsمجموعة. BuildManagerEventsينطبق الأحداث المرتبطة المؤقتة التجميعات بناء من نتائج مرحلتي أدوات مخصصة. لمزيد من المعلومات، راجع BuildManagerObject Pathsمقدمة إلى كائن BuildManager. للحصول إكمال قائمة الأحداث التي تحدث في أنواع المشاريع راجع حدث الكائنات (محددة بأنواع المشاريع). للحصول على قائمة أحداث التنفيذ التلقائي العامة راجع كائنات أحداث التنفيذ التلقائي.

  5. إضافة استدعاء الأسلوب التالي إلى أسلوب OnConnection.

    public void OnConnection(object application, 
    ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Call the WebReferenceEventsSample method.
        WebReferenceEventsSample (_applicationObject);
    }
    
  6. إضافة تعريف أسلوب WebReferenceEventsSample مباشرةً أسفل أسلوب OnConnection مع التعريفات التالية.

    public void WebReferenceEventsSample(DTE2 dte)
    {
        Solution2 soln = (Solution2)_applicationObject.Solution;
        Project proj;
        VSProject2 vsproj;
        String webServiceRef;
        proj = soln.Projects.Item(1);
    }
    

    تعريف proj = soln.Projects.Item(1);يتطلب أن مشروع مفتوح في Visual Studioبيئة التطوير المتكاملة (IDE) عند تشغيل هذا المثال. وبشكل خاص، يجب أن يكون المشروع Visual Basicأو #Visual Cالمشروع لأن VSLangProjWebReferencesEventsالكائن تقتصر إلى المشروع تلك الأنواع.

  7. تحويل المشروع VSProject2الكائن بواسطة إضافة ما يلي تعليمات برمجية إلى أسلوب WebReferenceEventsSample.

    // Get a reference to the VSProject2 object.
    vsproj = (VSProject2)proj.Object;
    
  8. في أسلوب استرداد الحدث الكائنات من طراز التنفيذ التلقائي.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents;
    
  9. في أسلوب WebReferenceEventsSample يعيّن معالجات الأحداث.

    webRefEvents.OnAfterWebReferenceAdded += new
     _dispVSLangProjWebReferencesEvents_OnAfterWebReferenceAddedEventHandler
    (webRefEvents_OnAfterWebReferenceAdded);
    webRefEvents.OnBeforeWebReferenceRemoved += new
    _dispVSLangProjWebReferencesEvents_OnBeforeWebReferenceRemovedEventHandler
    (webRefEvents_OnBeforeWebReferenceRemoved);
    webRefEvents.OnWebReferenceChanged += new
     _dispVSLangProjWebReferencesEvents_OnWebReferenceChangedEventHandler
    (webRefEvents_OnWebReferenceChanged);
    
  10. في أسلوب WebReferenceEventsSample إضافة مرجع إلى الخدمة ويب إلى المشروع.

    // Add a Web reference to the folder.
    // Replace the "<web reference>" with an actual Web service.
    MessageBox.Show("Adding a Web reference.", "Information");
    webServiceRef = "<web reference>";
    vsproj.AddWebReference(webServiceRef);
    

    لإضافة خدمة ويب بطريقة برمجية إلى المشروع يجب استبدال النص النائب, <web reference> في تعليمات برمجية مع محدد موقع المعلومات (URL) الخاص الفعلية ويب الخدمة.

    تؤدي هذه الخطوة OnAfterWebReferenceAddedالحدث إلى إطلاق عند تشغيل هذا إضافة - بوصة

  11. إضافة إجراءات لكل حدث المتعلقة إلى كائن الحدث أدناه أسلوب WebReferenceEventsSample.

    void webRefEvents_OnWebReferenceChanged(object pDispatch)
    {
        MessageBox.Show("A Web reference was changed.");
    }
    void webRefEvents_OnBeforeWebReferenceRemoved(object pDispatch)
    {
        MessageBox.Show("A Web reference was removed.");
    }
    void webRefEvents_OnAfterWebReferenceAdded(object pDispatch)
    {
        MessageBox.Show("A Web reference was added." + pDispatch.Name);
    }
    
  12. وأخيراً، لمنع Visual Studioمن إبطاء النظام الخاص بك قبل المتابعة لمراقبة أحداث متعلقة بـ النافذة بعد يغلق إضافة - في يعطل معالجة الحدث في أسلوب OnDisconnection.

    public void OnDisconnection(ext_DisconnectMode disconnectMode,
     ref Array custom)
    {
        // If the delegate handlers have been connected, then 
        // disconnect them here. 
        // If you do not do this, the handlers may still 
        // fire because garbage collection has not removed them.
        if (webRefEvents != null)
        {
            webRefEvents.OnAfterWebReferenceAdded -= new
     _dispVSLangProjWebReferencesEvents
    _OnAfterWebReferenceAddedEventHandler
    (webRefEvents_OnAfterWebReferenceAdded);
            webRefEvents.OnBeforeWebReferenceRemoved -= new
     _dispVSLangProjWebReferencesEvents
    _OnBeforeWebReferenceRemovedEventHandler
    (webRefEvents_OnBeforeWebReferenceRemoved);
            webRefEvents.OnWebReferenceChanged -= new
     _dispVSLangProjWebReferencesEvents
    _OnWebReferenceChangedEventHandler
    (webRefEvents_OnWebReferenceChanged);
        }
    }
    

    يتم إدراج رمز كاملة في المقطع المثال الخاص بهذا الموضوع.

  13. إلى إنشاء الوظيفة الإضافية وانقر فوق بنية الحل بنية قائمة.

  14. إفتح المشروع في بيئة التطوير المتكاملة (IDE).

  15. في القائمة أدوات، انقر فوق إضافة - إدارة وتحديد الخاص بك إضافة - من إضافة - في إدارة مربع حوار. انقر فوق ‏‏موافق إلى تشغيل الوظيفة الإضافية.

إلى اختبار معالجة الحدث VSLangProjWebReferencesEvents

  1. OnAfterWebReferenceAddedوقع الحدث بمجرد تشغيل الوظيفة الإضافية ، لأن المثال يضيف مرجعاً إلى الخدمة ويب برمجياً.

  2. إلى اختبار OnWebReferenceChangedالحدث:

    • في متصفح الحلول, قم بتوسيع مجلد المراجع.

    • تحديد الخدمة ويب ثم ينقر على اليمينه.

    • تحديد ماكرو جديد من قائمة منسدلة.

    • في النافذة الخصائص، تغيير السلوك URL من ديناميكي إلى ثابت عن طريق تحديد الثابتة من مربع تحرير وسرد سلوك محدد موقع المعلومات (URL) .

  3. إلى اختبار OnBeforeWebReferenceRemovedالحدث:

    • تحديد الخدمة ويب ثم ينقر على اليمينه.

    • تحديد ماكرو جديد من قائمة منسدلة.

مثال

المثال التالي هو أساسية Visual Studioالوظيفة الإضافية يوضح كيفية الاستجابة للأحداث مراجع ويب باستخدام Visual Studioالتنفيذ التلقائي.

using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using System.Windows.Forms;
namespace MyAddin
{
public class Connect : Object, IDTExtensibility2
{
    public Connect()
    {
    }
    public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        _applicationObject = (DTE2)application;
        _addInInstance = (AddIn)addInInst;
        // Call the WebReferenceEventsSample method.
        WebReferenceEventsSample(_applicationObject);
    }
    public void WebReferenceEventsSample(DTE2 dte)
    {
        try
         {
            Solution2 soln =
 (Solution2)_applicationObject.Solution;
            Project proj;
            VSProject2 vsproj;
            String webServiceRef;
            proj = soln.Projects.Item(1);
            // Get a reference to the VSProject2 object.
            vsproj = (VSProject2)proj.Object;
            //Connect Web references events.
            webRefEvents = 
vsproj.Events2.VSLangProjWebReferencesEvents;
            webRefEvents.OnAfterWebReferenceAdded +=new
 _dispVSLangProjWebReferencesEvents
_OnAfterWebReferenceAddedEventHandler
(webRefEvents_OnAfterWebReferenceAdded);
            webRefEvents.OnBeforeWebReferenceRemoved += new 
_dispVSLangProjWebReferencesEvents
_OnBeforeWebReferenceRemovedEventHandler
(webRefEvents_OnBeforeWebReferenceRemoved);
            webRefEvents.OnWebReferenceChanged += new
 _dispVSLangProjWebReferencesEvents
_OnWebReferenceChangedEventHandler
(webRefEvents_OnWebReferenceChanged);
            // Create a Web references folder.
            MessageBox.Show("Creating a Web references folder."
, "Information");
            vsproj.CreateWebReferencesFolder();
            // Add a Web reference to the folder.
            // Replace the "<web reference>" with an 
            // actual Web service URL.
            MessageBox.Show("Adding a Web reference."
, "Information");
            webServiceRef = "<web reference>";
            vsproj.AddWebReference(webServiceRef);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
    void webRefEvents_OnWebReferenceChanged(object pDispatch)
    {
        MessageBox.Show("A Web reference was changed.");
    }
    void webRefEvents_OnBeforeWebReferenceRemoved(object pDispatch)
    {
        MessageBox.Show("A Web reference was removed.");
    }
    void webRefEvents_OnAfterWebReferenceAdded(object pDispatch)
    {
        MessageBox.Show("A Web reference was added.");
    }
    public void OnDisconnection(ext_DisconnectMode disconnectMode,
ref Array custom)
    {
        // If the delegate handlers have been connected, then 
        // disconnect them here. 
        // If you do not do this, the handlers may still 
        // fire because garbage collection has not removed them.
        if (webRefEvents != null)
        {
            webRefEvents.OnAfterWebReferenceAdded -= new
 _dispVSLangProjWebReferencesEvents
_OnAfterWebReferenceAddedEventHandler
 (webRefEvents_OnAfterWebReferenceAdded);
            webRefEvents.OnBeforeWebReferenceRemoved -= new
 _dispVSLangProjWebReferencesEvents
_OnBeforeWebReferenceRemovedEventHandler
(webRefEvents_OnBeforeWebReferenceRemoved);
            webRefEvents.OnWebReferenceChanged -= new
 _dispVSLangProjWebReferencesEvents
_OnWebReferenceChangedEventHandler
(webRefEvents_OnWebReferenceChanged);
        }
    }
    public void OnAddInsUpdate(ref Array custom)
    {
    }
    public void OnStartupComplete(ref Array custom)
    {
    }
    public void OnBeginShutdown(ref Array custom)
    {
    }

    private DTE2 _applicationObject;
    private AddIn _addInInstance;
    private VSLangProj80.VSLangProjWebReferencesEvents webRefEvents;
    }
}

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

إلى يحول برمجياً هذه التعليمة البرمجية إنشاء جديد إضافة-in المشروع واستبدالها رمز أسلوب OnConnection مع تعليمات برمجية الموجودة في المثال. لمزيد من المعلومات حول كيفية إلى تشغيل وظيفة الإضافية "، راجع كيفية: عنصر تحكم الوظائف الإضافية مع إدارة الوظائف الإضافية.

راجع أيضًا:

المهام

كيفية القيام بما يلي: الاستجابة إلى أحداث مراجع ويب (‏‫#Visual C)

موارد أخرى

استجابة إلى أحداث التنفيذ التلقائي

استجابة إلى أحداث (Visual Basic و ‏‫#Visual C المشاريع)