Cómo: Crear un controlador de eventos en una macro de un tipo específico de proyecto

La plantilla EnvironmentEvents, que se incluye en cada proyecto de macros, contiene varios controladores de eventos declarados previamente. Estos controladores se pueden implementar para responder a una serie de eventos de entorno, como el cierre de una ventana, etc. Después de llevarse a cabo la implementación, estos controladores de extensibilidad general interceptan automáticamente un evento especificado cada vez que se genere en el entorno de desarrollo integrado (IDE) de Visual Studio. Para obtener más información, vea Cómo: Controlar los eventos de entorno en macros.

También puede agregar sus propios controladores de eventos del IDE a la plantilla EnvironmentEvents. Declare una variable de evento, proporcione el código del controlador de eventos para ella y agregue los controladores OnMacrosRuntimeReset y OnStartupComplete para automatizar la interceptación de eventos en el IDE de Visual Studio.

En este ejemplo se agrega un controlador de eventos ReferencesEvents que se desencadena cuando se agrega una referencia a un proyecto de Visual C# o Visual Basic.

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 agregar un controlador de eventos VSLangProj a la macro

  1. En el IDE de macros, haga clic en la opción Agregar referencia del menú Proyecto.

  2. En el cuadro de diálogo Agregar referencia, seleccione VSLangProj, haga clic en Agregar y, a continuación, en Aceptar.

  3. En el panel del explorador Vista de clases del IDE de macros, expanda MyMacros y haga doble clic en EnvironmentEvents para que aparezca en el panel del editor de macros.

  4. En la parte superior del módulo EnvironmentEvents, agregue:

    Imports VSLangProj
    
  5. Escriba una declaración para el evento a continuación de la región oculta del módulo EnvironmentEvents con la etiqueta "Código generado automáticamente, no modificar":

    <System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
    

    Esta declaración agrega ReferencesEvents y sus métodos a los cuadros desplegables Nombre de clase y Nombre de método del editor de código del IDE de macros.

  6. Utilice el cuadro desplegable Nombre de clase para seleccionar DTEEvents y el cuadro desplegable Nombre de método para seleccionar OnMacrosRuntimeReset y OnStartupComplete.

    De esta forma, se crean controladores de eventos para estos dos eventos. Estos controladores de eventos son necesarios para que el controlador ReferencesEvents intercepte automáticamente los eventos cada vez que éstos tengan lugar en el IDE de Visual Studio.

  7. Modifique los controladores de eventos agregando la conversión de tipos EnvironmentEvents.refEvents, como se muestra más abajo. Para interceptar un evento al agregar una referencia a un proyecto de Visual Basic, reemplace la cadena CSharpReferencesEvents por VBReferencesEvents.

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
     DTEEvents.OnMacrosRuntimeReset
            EnvironmentEvents.refEvents_
            =CType(DTE.Events.GetObject("CSharpReferencesEvents")_
            , ReferencesEvents)
    End Sub
    

    y

    Private Sub DTEEvents_OnStartupComplete() Handles_
     DTEEvents.OnStartupComplete
            EnvironmentEvents.refEvents_
            = CType(DTE.Events.GetObject("CSharpReferencesEvents")_
            , ReferencesEvents)
    End Sub
    
  8. Finalmente, pegue el código siguiente en el módulo EnvironmentEvents o seleccione refEvents y ReferenceAdded en los cuadros desplegables Nombre de clase y Nombre de método, respectivamente, para crear un controlador de eventos. Agregue la línea MsgBox(pReference.Name & " was added to the project.") al controlador de eventos, como se indica a continuación.

    Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
            MsgBox(pReference.Name & " was added to the project.")
    End Sub
    
  9. Para probar el controlador de eventos, cree un nuevo proyecto de Visual C# del tipo que sea.

    Aparece un cuadro de mensaje para cada referencia que se agregue automáticamente a la plantilla de proyecto.

Ejemplo

Este código muestra el ejemplo completo. Puede pegar el código siguiente en el módulo EnvironmentEvents del proyecto de macros.

Nota

Después de agregar el controlador de eventos, éste se desencadena cada vez que se agrega una referencia al tipo de proyecto especificado. Si no desea que se le notifique cada vez que se agregue una referencia, marque este código con comentarios.

<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

Vea también

Tareas

Cómo: Controlar eventos en una macro

Cómo: Controlar eventos de automatización (Visual Basic)

Cómo: Controlar eventos de automatización (Visual C#)

Otros recursos

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

Responder a eventos de automatización