كيفية القيام بما يلي: معالجة أحداث التنفيذ التلقائي (‏‫#Visual C)

يوضح الإجراء التالي كيفية مؤشر الأحداث المتعلقة بـ النافذة باستخدام Visual Studioإضافة بوصة

ملاحظة

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

إلى مؤشر الأحداث المتعلقة بـ النافذة باستخدام Visual Basic

  1. Visual Studioإضافة-in مشروع باستخدام إنشاء Visual Basic.

  2. في الفئة يعيّن يهيّئ متغير إلى مؤشر WindowEventsالكائن والمتغير آخر لتخزين OutputWindowPaneالكائن.

    Public WithEvents winEvents As EnvDTE.WindowEvents
    Private outputWinPane As OutputWindowPane
    

    في هذا المثال، تسمى المتغير winEvents. أخرى الكائنات في طراز التنفيذ التلقائي ربطها إلى أنواع أخرى من الأحداث. على سبيل المثال، FindEventsتطبيق إلى الأحداث المتعلقة إلى العثور على عمليات و TaskListEventsتطبيق إلى الأحداث المتعلقة إلى قائمة مهمة. للحصول على قائمة كاملة من الأحداث المتوفرة راجع استجابة إلى أحداث التنفيذ التلقائي.

  3. في OnConnectionأسلوب يهيّئ متغير إلى اعتراض الأحداث. في المثال أدناه، يدعى هذا المتغير الأحداث.

    Dim events As EnvDTE.Events
    events = _applicationObject.Events
    
  4. استرداد كائنات الحدث من طراز التنفيذ التلقائي.

    winEvents = CType(events.WindowEvents(Nothing), EnvDTE.WindowEvents)
    

    Visual Studioتلقائياً بتوصيل معالج الأسلوب نظرًا لاستخدام تعريف متغير الكائنWithEvents (Visual Basic)معالج.

  5. إضافة إجراءات لكل حدث المتعلقة إلى كائن الحدث. على سبيل المثال، إلى مؤشر الحدث الذي يحدث عند إغلاق نافذة ( ) ، يمكنك استخدام:

    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. إكمال يتم إدراج رمز في المثال التالي.

  6. وأخيراً، لمنع 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)

موارد أخرى

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