Partager via


Comment : gérer des événements à l'aide de macros

Mise à jour : novembre 2007

Lorsque vous créez une macro, un module nommé EnvironmentEvents est ajouté par défaut. Ce module prédéfinit un grand nombre d'objets événement décrits dans le tableau répertorié dans Réponse aux événements d'automation, afin que vous n'ayez pas besoin de le faire vous-même. Si vous souhaitez gérer un événement qui ne figure pas dans le module EnvironmentEvents, vous pouvez l'ajouter. Pour savoir comment procéder, consultez Comment : gérer EnvironmentEvents dans les macros.

La procédure suivante montre comment utiliser une macro pour gérer des événements en rapport avec une fenêtre Outil (dans le cas présent, la liste des tâches).

Remarque :

Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importation et exportationde paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour gérer les événements liés à une fenêtre Outil

  1. Ajoutez le code suivant au module EnvironmentEvents dans l'Éditeur de macros.

  2. Exécutez la macro.

    À mesure que la macro ajoute et supprime des éléments dans la liste des tâches, les événements de la liste des tâches sont gérés.

Exemple

L'exemple de macro suivant montre comment répondre à un événement à l'aide des objets événement du modèle Automation de Visual Studio. Il ajoute et supprime des tâches dans la liste des tâches, en répondant aux événements dans les gestionnaires d'événements.

' 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

Pour répondre à des événements dans des compléments, initialisez le gestionnaire d'événements dans l'événement OnConnectionMethod. Par exemple :

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

Voir aussi

Autres ressources

Réponse aux événements (projets Visual Basic et Visual C#)