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
Klicken Sie in der Makro-IDE im Menü Projekt auf Verweis hinzufügen.
Wählen Sie im Dialogfeld Verweis hinzufügen den Eintrag VSLangProj aus, klicken Sie auf Hinzufügen und dann auf OK.
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.
Fügen Sie oben im EnvironmentEvents-Modul Folgendes hinzu:
Imports VSLangProj
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.
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.
Ä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
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
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)