Comment : créer un gestionnaire d'événements dans une macro pour un type de projet spécifique
Le modèle EnvironmentEvents, inclus dans chaque projet macro, contient plusieurs gestionnaires d'événements préalablement déclarés. Ces gestionnaires d'événements peuvent être implémentés pour répondre à différents événements d'environnement, tels qu'une fermeture de fenêtre. Une fois l'implémentation fournie, ces gestionnaires d'événements d'extensibilité généraux interceptent automatiquement un événement spécifié à chaque fois qu'il se produit dans l'environnement de développement intégré (IDE) de Visual Studio. Pour plus d'informations, consultez Comment : gérer EnvironmentEvents dans les macros.
Vous pouvez également ajouter vos propres gestionnaires d'événements d'IDE au modèle EnvironmentEvents. Vous déclarez une variable d'événement, fournissez le code de gestionnaire d'événements pour celle-ci, puis ajoutez les gestionnaires OnMacrosRuntimeReset et OnStartupComplete pour automatiser l'interception d'événements dans l'IDE de Visual Studio.
Cet exemple ajoute un gestionnaire d'événements ReferencesEvents qui se déclenche lorsqu'une référence est ajoutée à un projet Visual C# ou Visual Basic.
Notes
Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Utilisation des paramètres.
Pour ajouter un gestionnaire d'événements VSLangProj à votre macro
Dans l'éditeur de macros, dans le menu Projet, cliquez sur Ajouter une référence.
Dans la boîte de dialogue Ajouter une référence, sélectionnez VSLangProj, cliquez sur Ajouter, puis sur OK.
Dans le volet d'exploration Affichage de classes de l'éditeur de macros, développez MyMacros et double-cliquez sur EnvironmentEvents pour l'afficher dans le volet de l'éditeur de macros.
En haut du module EnvironmentEvents, ajoutez :
Imports VSLangProj
Entrez la déclaration de l'événement après la zone masquée du module EnvironmentEvents nommée « Code généré automatiquement, ne pas modifier » :
<System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
Cette déclaration ajoute ReferencesEvents et ses méthodes aux zones déroulantes Nom de la classe et Nom de la méthode dans l'éditeur de code de l'éditeur de macros.
Utilisez la zone déroulante Nom de la classe pour sélectionner DTEEvents, et la zone déroulante Nom de la méthode pour sélectionner OnMacrosRuntimeReset et OnStartupComplete.
Des gestionnaires d'événements sont ainsi créés pour ces deux événements. Ces gestionnaires d'événements sont nécessaires pour permettre à votre gestionnaire ReferencesEvents d'intercepter automatiquement des événements à chaque fois qu'ils se produisent dans l'IDE de Visual Studio.
Modifiez les gestionnaires d'événements en ajoutant le cast EnvironmentEvents.refEvents, comme indiqué ci-dessous. Pour intercepter un événement lorsqu'une référence est ajoutée à un projet Visual Basic, remplacez la chaîne CSharpReferencesEvents par VBReferencesEvents.
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_ DTEEvents.OnMacrosRuntimeReset EnvironmentEvents.refEvents_ =CType(DTE.Events.GetObject("CSharpReferencesEvents")_ , ReferencesEvents) End Sub
et
Private Sub DTEEvents_OnStartupComplete() Handles_ DTEEvents.OnStartupComplete EnvironmentEvents.refEvents_ = CType(DTE.Events.GetObject("CSharpReferencesEvents")_ , ReferencesEvents) End Sub
Enfin, collez le code suivant dans le module EnvironmentEvents, ou sélectionnez refEvents dans la zone déroulante Nom de la classe, et ReferenceAdded dans la zone déroulante Nom de la méthode, pour créer un gestionnaire d'événements. Ajoutez la ligne MsgBox(pReference.Name & " was added to the project.") au gestionnaire d'événements, comme indiqué ci-dessous.
Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded MsgBox(pReference.Name & " was added to the project.") End Sub
Pour tester votre gestionnaire d'événements, créez un projet Visual C# de n'importe quel genre.
Un message s'affiche pour chaque référence ajoutée automatiquement au modèle de projet.
Exemple
Ce code constitue l'exemple complet. Vous pouvez coller le code ci-dessous dans le module EnvironmentEvents de votre projet de macros.
Notes
Une fois ce gestionnaire d'événements ajouté, il se déclenche à chaque fois qu'une référence est ajoutée au type de projet spécifié. Si vous ne souhaitez pas être notifié de chaque ajout de référence, mettez ce code en commentaire.
<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
Voir aussi
Tâches
Comment : gérer les événements dans une macro
Comment : gérer des événements Automation (Visual Basic)
Comment : gérer des événements Automation (Visual C#)