Compartir a través de


Cómo: Controlar eventos mediante Macros

Cuando crea una macro nueva, se agrega de manera predeterminada un módulo denominado EnvironmentEvents. Este módulo predefine muchos de los objetos de eventos descritos en la tabla que aparece en Responder a eventos de automatización, de modo que no es preciso que lo haga. Si desea controlar un evento que no está en el módulo EnvironmentEvents, agréguelo. Para obtener información detallada sobre cómo hacerlo, vea Cómo: Controlar los eventos de entorno en macros.

El procedimiento siguiente muestra cómo utilizar una macro para controlar eventos relacionados con una ventana de herramientas (en este caso, la Lista de tareas).

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos. Estos procedimientos se han desarrollado con la Configuración de desarrollo general activa. Para cambiar la configuración, elija la opción Importar y exportar configuraciones del menú Herramientas. Para obtener más información, vea Trabajar con valores de configuración.

Para controlar eventos relacionados con una ventana de herramientas

  1. Agregue el código siguiente al módulo EnvironmentEvents en el IDE de macros.

  2. Ejecute la macro.

    Cuando la macro agrega y quita elementos de la Lista de tareas, se controlan los eventos de la Lista de tareas.

Ejemplo

En el siguiente ejemplo de macro se muestra cómo responder a un evento mediante los objetos de eventos del modelo de automatización de Visual Studio. En este ejemplo se agregan y quitan tareas de la Lista de tareas, en respuesta a los eventos de los controladores de eventos.

' 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

Para responder a eventos en complementos, inicialice el controlador de eventos del evento OnConnectionMethod. Por ejemplo:

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

Vea también

Otros recursos

Responder a eventos (Proyectos de Visual Basic y Visual C#)