Freigeben über


Gewusst wie: Behandeln von Ereignissen mithilfe von Makros

Wenn Sie ein neues Makro erstellen, wird standardmäßig ein Modul mit dem Namen EnvironmentEvents hinzugefügt. In diesem Modul werden viele der Ereignisobjekte vordefiniert, die in der unter Reagieren auf Automatisierungsereignisse aufgeführten Tabelle beschrieben sind, d. h., Sie müssen diese Aufgabe nicht selbst ausführen. Um ein Ereignis zu behandeln, das nicht im EnvironmentEvents-Modul enthalten ist, fügen Sie es hinzu. Ausführliche Anleitungen dazu finden Sie unter Gewusst wie: Behandeln von Umgebungsereignissen in Makros.

Die unten stehende Prozedur veranschaulicht, wie mithilfe eines Makros Ereignisse behandelt werden, die sich auf ein Toolfenster – in diesem Fall die Aufgabenliste – beziehen.

Tipp

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert. Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

So behandeln Sie Ereignisse, die sich auf ein Toolfenster beziehen

  1. Fügen Sie dem EnvironmentEvents-Modul in der Makro-IDE den folgenden Code hinzu.

  2. Führen Sie das Makro aus.

    Während das Makro der Aufgabenliste Elemente hinzufügt bzw. Elemente daraus entfernt, werden die Ereignisse der Aufgabenliste behandelt.

Beispiel

Im folgenden Makrobeispiel wird die Reaktion auf ein Ereignis mithilfe von Ereignisobjekten des Automatisierungsmodells von Visual Studio beschrieben. Dieses Beispiel dient zum Hinzufügen und Entfernen von Aufgaben in der Aufgabenliste. Die Reaktion erfolgt entsprechend den Ereignissen in den Ereignishandlern.

' Macro code.
Public Module EnvironmentEvents

   Public Sub TaskListEvents_TaskAdded(ByVal TaskItem As _
   EnvDTE.TaskItem) Handles TaskListEvents.TaskAdded
      MsgBox("A task named '" & TaskItem.Description & "' was added _
      to the Task List.")
      ' Put other code here that you want to execute when this 
      ' event occurs.
   End Sub

   Public Sub TaskListEvents_TaskRemoved(ByVal TaskItem As _
   EnvDTE.TaskItem) Handles TaskListEvents.TaskRemoved
      MsgBox("A task named '" & TaskItem.Description & "' was _
      removed from the Task List.")
      ' Put other code here that you want to execute when this 
      ' event occurs.
   End Sub
End Module

Sub EventsExample()
    ' Add items to and remove items from the Task List.
    Dim TL As TaskList = dte.ToolWindows.TaskList
    Dim TLItem As taskitem

    ' Add a couple of tasks to the Task List.
    TLItem = TL.TaskItems.Add(" ", " ", "Test task 1.", _
    vsTaskPriority.vsTaskPriorityHigh, vsTaskIcon.vsTaskIconUser, _
    True, , 10, , )
    TLItem = TL.TaskItems.Add(" ", " ", "Test task 2.", _
    vsTaskPriority.vsTaskPriorityLow, vsTaskIcon.vsTaskIconComment, _
    , , 20, , )

    ' List the total number of task list items after adding the new 
    ' task items.
    MsgBox("Task Item 1 description: " & _
    TL.TaskItems.Item(2).Description)
    MsgBox("Total number of task items: " & TL.TaskItems.Count)

    ' Remove the second task item. The items list in reverse numeric 
    ' order.
    MsgBox("Deleting the second task item")
    TL.TaskItems.Item(1).Delete()
    MsgBox("Total number of task items: " & TL.TaskItems.Count)
End Sub

Um auf Ereignisse in Add-Ins zu reagieren, initialisieren Sie den Ereignishandler im OnConnectionMethod-Ereignis. Beispiel:

Public Class Class1
   Implements IDTExtensibility2
   Dim objEventsClass As EventsClass

   Public Sub OnConnection(ByVal Application As Object, ByVal _
   ConnectMode As EnvDTE.ext_ConnectMode, ByVal AddInInst As _
   Object, ByRef custom() As Object) Implements _
   EnvDTE.IDTExtensibility2.OnConnection
      objEventsClass = New EventsClass()
      objEventsClass.TaskListEvents = _
      _applicationObj.Events.TaskListEvents
   End Sub
End Class

Public Class EventsClass
   Public WithEvents TaskListEvents As EnvDTE.TaskListEvents

   Private Sub TaskListEvents_TaskAdded(ByVal TaskItem As _
   EnvDTE.TaskItem) Handles TaskListEvents.TaskAdded
      MsgBox("A task named '" & TaskItem.Description & "' was added _
      to the Task List.")
      ' Put any other code here that you want to execute when this 
      ' event occurs.
   End Sub
End Class

Siehe auch

Weitere Ressourcen

Reagieren auf Ereignisse (Visual Basic- und Visual C#-Projekte)