كيفية القيام بما يلي: معالجة أحداث التنفيذ التلقائي (#Visual C)
يوضح الإجراء التالي كيفية مؤشر الأحداث المتعلقة بـ النافذة باستخدام Visual Studioإضافة بوصة
ملاحظة
قد تختلف مربعات الحوار وأوامر القائمة التى تشاهدها الان عن تلك الموصوفة في التعليمات اعتماداً على الإعدادات النشطة أو الإصدار الخاص بك. تم تطوير هذه الإجراءات من خلال "إعدادات تطوير عام" النشط. لتغيير الإعدادات الخاصة بك, اختر إعدادات الاستيراد و التصدير ضمن القائمة أدوات . لمزيد من المعلومات، راجع العمل مع إعدادات.
إلى مؤشر الأحداث المتعلقة بـ النافذة باستخدام Visual Basic
Visual Studioإضافة-in مشروع باستخدام إنشاء Visual Basic.
في الفئة يعيّن يهيّئ متغير إلى مؤشر WindowEventsالكائن والمتغير آخر لتخزين OutputWindowPaneالكائن.
Public WithEvents winEvents As EnvDTE.WindowEvents Private outputWinPane As OutputWindowPane
في هذا المثال، تسمى المتغير winEvents. أخرى الكائنات في طراز التنفيذ التلقائي ربطها إلى أنواع أخرى من الأحداث. على سبيل المثال، FindEventsتطبيق إلى الأحداث المتعلقة إلى العثور على عمليات و TaskListEventsتطبيق إلى الأحداث المتعلقة إلى قائمة مهمة. للحصول على قائمة كاملة من الأحداث المتوفرة راجع استجابة إلى أحداث التنفيذ التلقائي.
في OnConnectionأسلوب يهيّئ متغير إلى اعتراض الأحداث. في المثال أدناه، يدعى هذا المتغير الأحداث.
Dim events As EnvDTE.Events events = _applicationObject.Events
استرداد كائنات الحدث من طراز التنفيذ التلقائي.
winEvents = CType(events.WindowEvents(Nothing), EnvDTE.WindowEvents)
Visual Studioتلقائياً بتوصيل معالج الأسلوب نظرًا لاستخدام تعريف متغير الكائنWithEvents (Visual Basic)معالج.
إضافة إجراءات لكل حدث المتعلقة إلى كائن الحدث. على سبيل المثال، إلى مؤشر الحدث الذي يحدث عند إغلاق نافذة ( ) ، يمكنك استخدام:
Private Sub windowsEvents_WindowClosing(ByVal Window As _ EnvDTE.Window) Handles winEvents.WindowClosing outputWinPane.OutputString("WindowEvents.WindowClosing" & _ ControlChars.Lf) outputWinPane.OutputString(ControlChars.Tab & "Window: " & _ Window.Caption & ControlChars.Lf) End Sub
في الحالة الخاصة WindowEventsالكائن يجب أن يكون لديه إجراءات WindowActivated، WindowClosing، WindowCreated, و WindowMoved. إكمال يتم إدراج رمز في المثال التالي.
وأخيراً، لمنع Visual Studioمن إبطاء النظام الخاص بك قبل المتابعة لمراقبة أحداث متعلقة بـ النافذة بعد يغلق إضافة - ضمنه، معالجة الحدث يعطل. في Visual Basic, ويتم تنفيذ ذلك عن طريق تعيين معالج الأحداث إلى Nothing.
Public Sub OnDisconnection(ByVal disconnectMode As _ ext_DisconnectMode, ByRef custom As Array) Implements _ IDTExtensibility2.OnDisconnection winEvents = Nothing End Sub
هذا بيوقف التشغيل معالجة الحدث ما إذا كان إضافة - في ، متوقف عن التشغيل أو يوقف التشغيل IDE الوقت إلى الأسفل إضافة - في لا يزال قيد التشغيل. عند إيقاف IDE كافة تشغيل إضافة-زر 'زر 'Ins'' الإضافية تلقائياً إيقاف الأول.
مثال
المثال التالي هو أساسية Visual Studioالوظيفة الإضافية التي توضح كيفية إلى اعتراض ومعالجتها الأحداث المتعلقة بـ النافذة في Visual Studio. عند حدوث أحداث متعلقة بـ نافذة يتم إرسال رسالة إعلام إلى النافذة إخراج.
Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Public Class Connect
Implements IDTExtensibility2
' Handle window events.
Public WithEvents winEvents As EnvDTE.WindowEvents
Private outputWinPane As OutputWindowPane
Dim _applicationObject As DTE2
Dim _addInInstance As AddIn
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, ByRef _
custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
Dim events As EnvDTE.Events
events = _applicationObject.Events
' Send event messages to the Output window.
Dim outputWindow As OutputWindow
outputWindow = CType(_applicationObject.Windows.Item _
(Constants.vsWindowKindOutput).Object, EnvDTE.OutputWindow)
outputWinPane = outputWindow.OutputWindowPanes.Add( _
"DTE Event Information")
' Retrieve the event objects from the automation model.
' Visual Basic automatically connects the method handler
' because the object variable declaration uses the 'WithEvents'
' handler.
winEvents = CType(events.WindowEvents(Nothing), _
EnvDTE.WindowEvents)
End Sub
' Handle all window-related events.
Private Sub windowsEvents_WindowActivated(ByVal GotFocus As _
EnvDTE.Window, ByVal LostFocus As EnvDTE.Window) Handles _
winEvents.WindowActivated
outputWinPane.OutputString("WindowEvents.WindowActivated" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab _
& "Window receiving focus: " & GotFocus.Caption _
& ControlChars.Lf)
outputWinPane.OutputString _
(ControlChars.Tab & "Window that lost focus: " _
& LostFocus.Caption & ControlChars.Lf)
End Sub
Private Sub windowsEvents_WindowClosing(ByVal Window As _
EnvDTE.Window) Handles winEvents.WindowClosing
outputWinPane.OutputString("WindowEvents.WindowClosing" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Window: " & _
Window.Caption & ControlChars.Lf)
End Sub
Private Sub windowsEvents_WindowCreated(ByVal Window As _
EnvDTE.Window) Handles winEvents.WindowCreated
outputWinPane.OutputString("WindowEvents.WindowCreated" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Window: " & _
Window.Caption & ControlChars.Lf)
End Sub
Private Sub windowsEvents_WindowMoved(ByVal Window As _
EnvDTE.Window, ByVal Top As Integer, ByVal Left As Integer, ByVal _
[Width] As Integer, ByVal Height As Integer) Handles _
winEvents.WindowMoved
outputWinPane.OutputString("WindowEvents.WindowMoved" & _
ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Window: " & _
Window.Caption & ControlChars.Lf)
outputWinPane.OutputString(ControlChars.Tab & "Location: (" & _
Top.ToString() & " , " & Left.ToString() & " , " & _
Width.ToString() & " , " & Height.ToString() & ")" & _
ControlChars.Lf)
End Sub
Public Sub OnDisconnection(ByVal disconnectMode As _
ext_DisconnectMode, ByRef custom As Array) Implements _
IDTExtensibility2.OnDisconnection
' Turns off window event handling when the add-in shuts down.
winEvents = Nothing
End Sub
Public Sub OnAddInsUpdate(ByRef custom As Array) Implements _
IDTExtensibility2.OnAddInsUpdate
End Sub
Public Sub OnStartupComplete(ByRef custom As Array) Implements _
IDTExtensibility2.OnStartupComplete
End Sub
Public Sub OnBeginShutdown(ByRef custom As Array) Implements _
IDTExtensibility2.OnBeginShutdown
End Sub
End Class
التحويل البرمجي للتعليمات البرمجية
إلى يحول برمجياً هذه التعليمة البرمجية إنشاء جديد Visual Studioإضافة-in المشروع واستبدالها رمز أسلوب OnConnection مع تعليمات برمجية الموجودة في المثال. لمزيد من المعلومات حول كيفية إلى تشغيل وظيفة الإضافية "، راجع كيفية: عنصر تحكم الوظائف الإضافية مع إدارة الوظائف الإضافية.
راجع أيضًا:
المهام
كيفية القيام بما يلي: معالجة أحداث التنفيذ التلقائي (#Visual C)