كيفية القيام بما يلي: الاستجابة إلى الأحداث في مشروع محددة (Visual Basic)
يتضمن طراز التنفيذ التلقائي الكائنات التي يمكن استخدامها للاستجابة للأحداث بيئة في Visual Studioبيئة التطوير المتكاملة (IDE). بيئة أحداث معينة إلى VSLangProjو VSLangProj80مشاريع تم تعريفها في #Visual Cو Visual Basic. على سبيل المثال، ImportsEventsتشغيل الحدث عند إضافتها إلى استيراد أو إزالتها من Visual Basicمجموعة.
يستخدم هذا المثال #Visual Cإلى إضافة ReferencesEventsمعالج الأحداث تقتصر على نوع من المشروع أو إلى إضافة - في المشروع. ReferencesEventsيتم تشغيل الحدث عند تغير مرجع تمت الإضافة إلى, أو إزالتها من#Visual CأوVisual Basicالمشروع.
ملاحظة
قد تختلف مربعات الحوار وأوامر القائمة التى تشاهدها الان عن تلك الموصوفة في التعليمات اعتماداً على الإعدادات النشطة أو الإصدار الخاص بك. تم تطوير هذه الإجراءات من خلال "إعدادات تطوير عام" النشط. لتغيير الإعدادات الخاصة بك, اختر إعدادات الاستيراد و التصدير ضمن القائمة أدوات . لمزيد من المعلومات، راجع العمل مع إعدادات.
إلى مؤشر الأحداث المتعلقة بـ النافذة باستخدام Visual Basic
إنشاء Visual Studioالمشروع الوظيفة الإضافية في #Visual C.
إضافة using VSLangProj;إلى أعلى الملف يعيّن.vb.
تشغيل القائمة مشروع، انقر فوق إضافة مرجع، انقر فوق علامة تبويب .NET تحديد VSLangProj VSLangProj2 VSLangProj80 ثم انقر فوق موافق .
في الفئة يعيّن يهيّئ متغير إلى مؤشر ReferencesEventsالكائن وآخر إلى مؤشر OutputWindowPane.
private DTE2 _applicationObject; private AddIn _addInInstance; private VSLangProj.ReferencesEvents refEvents; private OutputWindowPane outputWinPane;
في هذا المثال، يسمى المتغير refEvents.
أخرى الكائنات في طراز التنفيذ التلقائي ربطها إلى أنواع أخرى من الأحداث التي تحدث في المشروع. على سبيل المثال، ImportsEventsتشغيل الحدث عند إضافتها إلى استيراد أو إزالتها من Importsمجموعة. BuildManagerEventsينطبق الأحداث المرتبطة المؤقتة التجميعات بناء من نتائج مرحلتي أدوات مخصصة. لمزيد من المعلومات، راجع BuildManagerObject Pathsمقدمة إلى كائن BuildManager. للحصول إكمال قائمة الأحداث التي تحدث في أنواع المشاريع راجع حدث الكائنات (محددة بأنواع المشاريع)، للحصول على قائمة أحداث التنفيذ التلقائي العامة لترى كائنات أحداث التنفيذ التلقائي.
في OnConnectionأسلوب يهيّئ متغير إلى اعتراض الأحداث. في هذا المثال، يسمى المتغير events.
EnvDTE80.Events2 events = (EnvDTE80.Events2)_applicationObject.Events;
في OnConnectionأسلوب يهيّئ OutputWindowمتغير.
OutputWindow outputWindow = (OutputWindow)_applicationObject.Windows.Item (Constants.vsWindowKindOutput).Object; outputWinPane = outputWindow.OutputWindowPanes.Add ("ReferencesEvents Event Information");
في OnConnectionأسلوب استرداد الحدث الكائنات من طراز التنفيذ التلقائي.
refEvents = (VSLangProj.ReferencesEvents)events.GetObject ("CSharpReferencesEvents");
في هذا المثال ReferencesEventsخاصة إلى #Visual Cالمشاريع. إلى الاستجابة إلى الأحداث الخاصة إلى Visual Basicالأحداث، استبدال السلسلة CSharpReferencesEventsمع VBReferencesEvents. لمزيد من المعلومات حول كيف يتم إلى تحديد السلاسل إلى استخدام أحداث خاصة إلى الأنواع المختلفة من مشاريع راجع حدث الكائنات (محددة بأنواع المشاريع).
تتصل كل المفوض كشف من الحدث الكائنات استرداد في الخطوة 3 باستخدام عامل التشغيل +=. على سبيل المثال، للاتصال المفوضون كشف عن طريق ReferenceAddedالحدث، هل استخدم:
refEvents.ReferenceAdded += new _dispReferencesEvents_ReferenceAddedEventHandler (this.ReferenceAdded);
إضافة إجراءات لكل حدث المتعلقة إلى كائن الحدث. على سبيل المثال، لمعالجة الأحداث التي تحدث عند تمت الإضافة مرجع ستستخدم:
public void ReferenceAdded( VSLangProj.Reference addedRef ) { outputWinPane.OutputString( "ReferencesEvents.ReferenceAdded" + "\n" ); outputWinPane.OutputString( "The reference to " + addedRef.Name + " was added." + "\n" ); }
في الحالة الخاصة ReferencesEvents, يجب أن يكون لديك المعرّفة من أجل الأحداث:
و
يتضمن قائمة كاملة المثال التالي هذه الأحداث.
وأخيراً، لمنع Visual Studioمن إبطاء النظام الخاص بك قبل المتابعة لمراقبة أحداث متعلقة بـ النافذة بعد يغلق إضافة - ضمنه، معالجة الحدث يعطل. #Visual C، بذلك باستخدام عامل التشغيل-=. على سبيل المثال إلى يعطل معالجة الحدث من أجل ReferenceAddedستستخدم:
refEvents.ReferenceAdded -= new _dispReferencesEvents_ReferenceAddedEventHandler (this.ReferenceAdded);
هذا بيوقف التشغيل معالجة الحدث ما إذا كان إضافة - في ، متوقف عن التشغيل أو يوقف التشغيل IDE الوقت إلى الأسفل إضافة - في لا يزال قيد التشغيل. عند إيقاف IDE كافة تشغيل إضافة-زر 'زر 'Ins'' الإضافية تلقائياً إيقاف الأول.
مثال
المثال التالي هو أساسية Visual Studioالوظيفة الإضافية التي يوضح كيفية اعتراض و مؤشر #Visual Cالأحداث المرجع في Visual Studio. عند حدوث حدث مرجع يتم إرسال رسالة إعلام إلى النافذة إخراج.
using System;
using Microsoft.VisualStudio.CommandBars;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using VSLangProj;
public Connect()
{
}
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
// Retrieve the event objects from the automation model.
EnvDTE80.Events2 events =
(EnvDTE80.Events2)_applicationObject.Events;
// Send event messages to the Output window.
OutputWindow outputWindow =
(OutputWindow)_applicationObject.Windows.Item
(Constants.vsWindowKindOutput).Object;
outputWinPane =
outputWindow.OutputWindowPanes.Add
("ReferencesEvents Event Information");
// Retrieve the event objects from the automation model.
refEvents = (VSLangProj.ReferencesEvents)
events.GetObject("CSharpReferencesEvents");
// Connect to each delegate exposed from each object
// retrieved above.
refEvents.ReferenceAdded += new
_dispReferencesEvents_ReferenceAddedEventHandler
(this.ReferenceAdded);
refEvents.ReferenceChanged += new
_dispReferencesEvents_ReferenceChangedEventHandler
(this.ReferenceChanged);
refEvents.ReferenceRemoved += new
_dispReferencesEvents_ReferenceRemovedEventHandler
(this.ReferenceRemoved);
}
public void OnDisconnection(Extensibility.ext_DisconnectMode
disconnectMode, ref System.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 they have not been garbage collected.
if (refEvents != null)
{
refEvents.ReferenceAdded -= new
_dispReferencesEvents_ReferenceAddedEventHandler
(this.ReferenceAdded);
refEvents.ReferenceChanged -= new
_dispReferencesEvents_ReferenceChangedEventHandler
(this.ReferenceChanged);
refEvents.ReferenceRemoved -= new
_dispReferencesEvents_ReferenceRemovedEventHandler
(this.ReferenceRemoved);
}
}
// References related events.
public void ReferenceRemoved( VSLangProj.Reference removedRef )
{
outputWinPane.OutputString( "ReferencesEvents.ReferenceRemoved"
+ "\n" );
outputWinPane.OutputString( "The reference to " + removedRef.Name
+ " was removed." + "\n" );
}
public void ReferenceChanged( VSLangProj.Reference changedRef )
{
outputWinPane.OutputString( "ReferencesEvents.ReferenceChanged"
+ "\n" );
outputWinPane.OutputString( "The reference to " + changedRef.Name
+ " was changed." + "\n" );
}
public void ReferenceAdded( VSLangProj.Reference addedRef )
{
outputWinPane.OutputString( "ReferencesEvents.ReferenceAdded" +
"\n" );
outputWinPane.OutputString( "The reference to " + addedRef.Name
+ " was added." + "\n" );
}
public void OnAddInsUpdate(ref System.Array custom)
{
}
public void OnStartupComplete(ref System.Array custom)
{
}
public void OnBeginShutdown(ref System.Array custom)
{
}
private DTE2 _applicationObject;
private AddIn _addInInstance;
private VSLangProj.ReferencesEvents refEvents;
private OutputWindowPane outputWinPane;
}}
التحويل البرمجي للتعليمات البرمجية
إلى يحول برمجياً هذه التعليمة البرمجية إنشاء جديد إضافة-in المشروع واستبدالها رمز أسلوب OnConnection مع تعليمات برمجية الموجودة في المثال. لمزيد من المعلومات حول كيفية إلى تشغيل وظيفة الإضافية "، راجع كيفية: عنصر تحكم الوظائف الإضافية مع إدارة الوظائف الإضافية.
راجع أيضًا:
المهام
كيفية القيام بما يلي: الاستجابة إلى الأحداث في مشروع محددة (Visual Basic)