Gewusst wie: Behandeln von Ereignissen in einem Makro
Aktualisiert: November 2007
In der integrierten Entwicklungsumgebung (Integrated Development Environment – IDE) wird zwischen zwei Ereignistypen unterschieden, und zwar Ereignissen, die für alle Projekte gelten, und Ereignissen, die nur für bestimmte Projekttypen gelten. Ereignisse, die für alle Projekttypen gelten, sind beispielsweise das Hinzufügen einer neuen Datei, das Auswählen einer Menüoption oder das Schließen eines Fensters. Ereignisse, die nur für bestimmte Projekttypen gelten, sind beispielsweise das Hinzufügen eines Verweises oder eines Webverweises zu einem Projekt.
Bei dieser Aufgabe wird vorausgesetzt, dass Sie bereits Kenntnisse über das Aufrufen der Entwicklungsumgebung für Makros sowie das Erstellen eines Makroprojekts besitzen. Weitere Informationen finden Sie unter Automatisieren von wiederkehrenden Aktionen mit Makros.
In diesem Beispiel wird die Reaktion auf Fensterereignisse veranschaulicht, die für alle Visual Studio-Projekte gelten. Weitere Informationen zu Ereignissen, die für alle Sprachen gelten, finden Sie unter Reagieren auf Automatisierungsereignisse.
Hinweis: |
---|
Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Bei der Entwicklung dieser Prozeduren 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 Visual Studio-Einstellungen. |
So zeichnen Sie ein sprachneutrales Ereignis auf
Erstellen Sie in MyMacros ein neues Makromodul mit dem Namen CaptureEvents.
Wenn Sie ein neues Makro erstellen, wird standardmäßig ein Modul mit dem Namen EnvironmentEvents hinzugefügt. Dieses Modul definiert viele der Ereignisobjekte, die in der unter Reagieren auf Automatisierungsereignisseaufgeführten Tabelle beschrieben werden. Im Modul EnvironmentEvents ist die Variable WindowEvents auf Modulebene bereits deklariert, wie unten dargestellt.
Public WithEvents windowEvents As EnvDTE.WindowEvents
Verwenden Sie im Modul EnvironmentEvents im Editor der Makro-IDE die Dropdownfelder Klassenname und Methodenname, um eine WindowClosing-Ereignisbehandlungsroutine für die Variable zu erstellen, oder schneiden Sie den unten stehenden Code aus, und fügen Sie ihn ein.
Public Sub windowEvents_WindowClosing( _ ByVal Window As EnvDTE.Window) Handles windowEvents.WindowClosing MsgBox("You are closing the window.") End Sub
Wechseln Sie zurück zur Entwicklungsumgebung, und schließen Sie das aktive Fenster.
Das Meldungsfeld wird angezeigt. Diese Meldung wird immer dann angezeigt, wenn Sie das aktive Fenster schließen. Löschen Sie den Ereignishandler, wenn Sie nicht bei jedem Schließen des aktiven Fensters informiert werden möchten.
Hinzufügen eines Verweises zu einem Projekt
In diesem Beispiel wird die Reaktion auf das Hinzufügen eines Verweises zu einem Projekt veranschaulicht. Die sprachspezifischen Ereignisse sind in der Events-Eigenschaft enthalten. Das Beispiel bietet eine projektspezifische Anwendung der Bindung an ReferencesEvents. Sie können auch einen Ereignishandler auf globaler Ebene bereitstellen, indem Sie den Handler im Modul EnvironmentEvents definieren. Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines Ereignishandlers in einem Makro für einen bestimmten Projekttyp. Um dieses Beispiel ausführen zu können, muss in der IDE von Visual Studio ein Visual Basic-, Visual J#- oder Visual C#-Projekt geöffnet sein.
So zeichnen Sie ein Visual Basic-, Visual J#- oder Visual C#-Ereignis auf
Erstellen Sie ein neues Makromodul mit dem Namen CaptureRefEvents.
Fügen Sie einen Verweis auf VSLangProj hinzu, indem Sie in der Makro-IDE im Menü Projekt die Option Verweis hinzufügen… auswählen. Wählen Sie im Dialogfeld Verweis hinzufügen die Option VSLangProj aus, klicken Sie auf Hinzufügen und dann auf OK.
Erweitern Sie im Modul EnvironmentEvents den reduzierten Abschnitt Automatisch generierter Code, nicht änderbar, und fügen Sie eine ReferencesEvents-Variable auf Modulebene hinzu.
Dim WithEvents refEvents As VSLangProj.ReferencesEvents
Erstellen Sie im Editor mithilfe der Dropdownfelder Klassenname und Methodenname Ereignisbehandlungsroutinen für die Variable.
Public Sub refEvents_ReferenceAdded(ByVal pReference As _ VSLangProj.Reference) Handles refEvents.ReferenceAdded MsgBox(pReference.Name & " was added to the project.") End Sub
Klicken Sie im Makro-Explorer mit der rechten Maustaste auf das Modul CaptureRefEvents. Wählen Sie im Dropdownmenü den Befehl Neues Makro aus. Schneiden Sie den unten stehenden Code aus, und fügen Sie ihn ein, um die refEvents-Variable zu initialisieren.
Public Sub ConnectRefEvents() Dim proj As VSLangProj.VSProject proj = CType(DTE.Solution.Projects.Item(1).Object, _ VSLangProj.VSProject) refEvents = proj.Events.ReferencesEvents End Sub
Speichern Sie das Makro ConnectRefEvents.
Öffnen Sie in der IDE von Visual Studio ein Visual C#-, Visual J#- oder Visual Basic-Projekt.
Führen Sie das Makro ConnectRefEvents aus.
Fügen Sie einen Verweis auf das Projekt in der IDE von Visual Studio hinzu.
Ein Meldungsfeld mit folgendem Text wird angezeigt: "<Verweisname> wurde zum Projekt hinzugefügt".