Freigeben über


Gewusst wie: Erstellen eines Ereignishandlers in einem Makro für einen bestimmten Projekttyp

Die EnvironmentEvents-Vorlage, die in jedem Makroprojekt enthalten ist, umfasst eine Reihe vordeklarierter Ereignishandler. Diese Ereignishandler können implementiert werden, um auf verschiedene Umgebungsereignisse, z. B. das Schließen eines Fensters, zu reagieren. Nach der Implementierung fangen diese Ereignishandler für allgemeine Erweiterbarkeit ein angegebenes Ereignis immer automatisch ab, sobald es in der integrierten Entwicklungsumgebung (IDE) von Visual Studio eintritt. Weitere Informationen finden Sie unter Gewusst wie: Behandeln von Umgebungsereignissen in Makros.

Sie können der EnvironmentEvents-Vorlage auch eigene IDE-Ereignishandler hinzufügen. Dabei deklarieren Sie eine Ereignisvariable, geben den zugehörigen Ereignishandlercode an und fügen den OnMacrosRuntimeReset-Handler und den OnStartupComplete-Handler hinzu, um das Abfangen des Ereignisses in der IDE von Visual Studio zu automatisieren.

In diesem Beispiel wird ein ReferencesEvents-Ereignishandler hinzugefügt, der ausgelöst wird, wenn einem Visual C#- oder Visual Basic-Projekt ein Verweis hinzugefügt wird.

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. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen finden Sie unter Arbeiten mit Einstellungen.

So fügen Sie einem Makro einen VSLangProj-Ereignishandler hinzu

  1. Klicken Sie in der Makro-IDE im Menü Projekt auf Verweis hinzufügen.

  2. Wählen Sie im Dialogfeld Verweis hinzufügen den Eintrag VSLangProj aus, klicken Sie auf Hinzufügen und dann auf OK.

  3. Erweitern Sie in der Makro-IDE im Explorerbereich Klassenansicht den Knoten MyMacros, und doppelklicken Sie auf EnvironmentEvents, um dieses Modul im Makro-Editor-Bereich anzuzeigen.

  4. Fügen Sie oben im EnvironmentEvents-Modul Folgendes hinzu:

    Imports VSLangProj
    
  5. Geben Sie im verborgenen Bereich des EnvironmentEvents-Moduls mit der Bezeichnung "Automatically generated code, do not modify" eine Deklaration für das Ereignis ein:

    <System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
    

    Durch diese Deklaration werden ReferencesEvents und die zugehörigen Methoden in die Dropdownfelder Klassenname und Methodenname des Code-Editors der Makro-IDE eingefügt.

  6. Wählen Sie im Dropdownfeld Klassename den Eintrag DTEEvents und im Dropdownfeld Methodenname die Einträge OnMacrosRuntimeReset und OnStartupComplete aus.

    Dadurch werden Ereignishandler für diese zwei Ereignisse erstellt. Diese Ereignishandler sind erforderlich, damit der ReferencesEvents-Handler Ereignisse immer automatisch abfangen kann, sobald sie in der IDE von Visual Studio eintreten.

  7. Ändern Sie die Ereignishandler, indem Sie die EnvironmentEvents.refEvents-Umwandlung hinzufügen, wie unten dargestellt. Zum Abfangen eines Ereignisses beim Hinzufügen eines Verweises zu einem Visual Basic-Projekt ersetzen Sie die Zeichenfolge CSharpReferencesEvents mit VBReferencesEvents.

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
     DTEEvents.OnMacrosRuntimeReset
            EnvironmentEvents.refEvents_
            =CType(DTE.Events.GetObject("CSharpReferencesEvents")_
            , ReferencesEvents)
    End Sub
    

    und

    Private Sub DTEEvents_OnStartupComplete() Handles_
     DTEEvents.OnStartupComplete
            EnvironmentEvents.refEvents_
            = CType(DTE.Events.GetObject("CSharpReferencesEvents")_
            , ReferencesEvents)
    End Sub
    
  8. Fügen Sie schließlich den folgenden Code in das EnvironmentEvents-Modul ein, oder wählen Sie im Dropdownfeld Klassenname den Eintrag refEvents und im Dropdownfeld Methodenname den Eintrag ReferenceAdded aus, um einen Ereignishandler zu erstellen. Fügen Sie dem Ereignishandler die Zeile MsgBox(pReference.Name & " was added to the project.") hinzu, wie unten dargestellt.

    Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
            MsgBox(pReference.Name & " was added to the project.")
    End Sub
    
  9. Erstellen Sie zum Testen des Ereignishandlers ein neues Visual C#-Projekt eines beliebigen Typs.

    Für jeden Verweis, der der Projektvorlage automatisch hinzugefügt wird, wird ein Meldungsfeld angezeigt.

Beispiel

Der folgende Code umfasst das vollständige Beispiel. Sie können diesen Code in das EnvironmentEvents-Modul des Makroprojekts einfügen.

Tipp

Wenn Sie den Ereignishandler hinzugefügt haben, wird er immer dann ausgelöst, wenn dem angegebenen Projekttyp ein Verweis hinzugefügt wird. Falls Sie nicht jedes Mal benachrichtigt werden möchten, wenn ein Verweis hinzugefügt wird, kommentieren Sie diesen Code aus.

<System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
 DTEEvents.OnMacrosRuntimeReset
        EnvironmentEvents.refEvents= _
        CType(DTE.Events.GetObject("CSharpReferencesEvents")_
        , VSLangProj.ReferencesEvents)
End Sub
Private Sub DTEEvents_OnStartupComplete() Handles_
 DTEEvents.OnStartupComplete
        EnvironmentEvents.refEvents = _
        CType(DTE.Events.GetObject("CSharpReferencesEvents")_
        , VSLangProj.ReferencesEvents)
End Sub
Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
        MsgBox(pReference.Name & " was added to the project.")
End Sub

Siehe auch

Aufgaben

Gewusst wie: Behandeln von Ereignissen in einem Makro

Gewusst wie: Behandeln von Automatisierungsereignissen (Visual Basic)

Gewusst wie: Behandeln von Automatisierungsereignissen (Visual C#)

Weitere Ressourcen

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

Reagieren auf Automatisierungsereignisse