Partilhar via


Como: Responder a eventos em um projeto específico (Visual Basic)

O modelo de automação contém objetos que podem ser usados para responder a eventos de ambiente no Visual Studio ambiente de desenvolvimento integrado (IDE). Os eventos de ambiente definidos no VSLangProj e VSLangProj80 são específicas para Visual C#, Visual Basic, e Visual J# projetos. Por exemplo, ImportsEvents é disparado quando uma importação é adicionada ou removida de um Imports coleção.

Este exemplo usa Visual Basic Para adicionar um ReferencesEvents manipulador de eventos, que é específico para um tipo de projeto para um projeto suplemento. ReferencesEvents são gerados quando uma referência é alterada, adicionada ou removida de um Visual C#, Visual Basic, ou Visual J# projeto.

Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Importar e exportar configurações on the Ferramentas menu.Para obter mais informações, consulte Configurações do Visual Studio.

Para manipular eventos relacionados à referência usando o Visual Basic

  1. Criar um Visual Studio projeto suplemento em Visual Basic.

  2. Add Imports VSLangProj para a parte superior do arquivo conectar.vb.

  3. Sobre o Projeto menu, clicar Adicionar referência, clicar no NET guia, selecionar a primeira VSLangProje clicar OK.

  4. Na classe conectar, inicializar uma variável para manipular o ReferencesEvents objeto e outro para lidar com um OutputWindowPane.

    Public Class Connect
        Implements IDTExtensibility2
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
        ' Handle Reference events.
        Public WithEvents refEvents As VSLangProj.ReferencesEvents
        Private outputWinPane As OutputWindowPane
    

    No exemplo, a variável é denominada refEvents.

    Outros objetos no modelo de automação estão relacionadas a outros tipos de eventos que são específicos para o projeto.Por exemplo, ImportsEvents é disparado quando uma importação é adicionada ou removida de um Imports coleção. BuildManagerEvents aplica a eventos relacionados a assemblies temporários criados a partir de saídas de ferramentas personalizadas. Para obter mais informações sobre o BuildManager objeto, consulte Introdução ao objeto BuildManager. Para obter uma lista completa dos eventos que são específicas para tipos de projetos, consulte Objetos de evento (específicas para tipos de projetos). Para obter uma lista de eventos de automação Geral, consulte Objetos de eventos de automação.

  5. No OnConnection método, inicializar uma variável para interceptar eventos. Neste exemplo, a variável é denominada eventos.

        Dim events As EnvDTE80.Events2
        events = CType(_applicationObject.Events, Events2)
    
  6. No OnConnection método, inicializar um OutputWindow variável.

        Dim outputWindow As OutputWindow
        outputWindow = CType(_applicationObject.Windows.Item _
        (Constants.vsWindowKindOutput).Object, EnvDTE.OutputWindow)
        outputWinPane = outputWindow.OutputWindowPanes.Add_
        ("Reference Event Information ")
    
  7. Também no OnConnection método, recuperar os objetos de evento do modelo de automação.

    refEvents = CType(events.GetObject("CSharpReferencesEvents"),_
     ReferencesEvents)
    

    Visual Studio conecta automaticamente o manipulador de método porque usa a declaração de variável de objeto a WithEvents manipulador.

    Neste exemplo o ReferencesEvents são específicas para Visual C# projetos. Para responder a eventos que são específicos para Visual Basic ou Visual J# eventos, substituir a seqüência de caracteres, CSharpReferencesEvents com VBReferencesEvents ou VJSharpReferencesEvents, respectivamente. Para obter mais informações sobre como determinar as cadeias de caracteres a ser usado para eventos que são específicos para diferentes tipos de projetos, consulte Objetos de evento (específicas para tipos de projetos).

  8. Adicione procedimentos para cada evento relacionado a objeto de evento.Por exemplo, para manipular o evento que ocorre quando uma referência é adicionada, você usaria:

    Sub ReferenceAdded(ByVal addedRef As VSLangProj.Reference)_
        Handles refEvents.ReferenceAdded
        outputWinPane.OutputString_
        ("ReferencesEvents.ReferenceAdded" & ControlChars.Lf)
        outputWinPane.OutputString("The reference to " _
        & addedRef.Name & " was added." & ControlChars.Lf)
    End Sub
    

    No caso de ReferencesEvents, você deve ter definidos para eventos ReferenceAdded, ReferenceRemoved, ReferenceChanged, sistema autônomo mostra a listagem completa do exemplo a seguir.

  9. Finalmente, para pr evento Visual Studio de diminuindo o seu sistema continua a monitorar s evento relacionados à janela depois de fechar o suplemento, você deve desabilitar evento tratamento. In Visual Basic, isso é concluído definindo a evento manipulador Nothing.

    Public Sub OnDisconnection(ByVal RemoveMode As_
     Extensibility.ext_DisconnectMode, ByRef custom As System.Array)_
     Implements Extensibility.IDTExtensibility2.OnDisconnection
        refEvents = Nothing
    End Sub
    

    Isso desativa o tratamento de eventos se o suplemento ou o IDE é encerrado enquanto o suplemento ainda está sendo executado.Quando o IDE for desligado, todos os suplementos em execução são automaticamente fechar primeiro.

Exemplo

O exemplo a seguir é um básico Visual Studio suplemento que demonstra como interceptar e manipular Visual C# referência de eventos Visual Studio. Sempre que ocorre um evento de referência, uma mensagem de notificação é enviada para o Saída janela.

Imports System
Imports Microsoft.VisualStudio.CommandBars
Imports Extensibility
Imports EnvDTE
Imports EnvDTE80
Imports VSLangProj

Public Class Connect
    Implements IDTExtensibility2
    Dim _applicationObject As DTE2
    Dim _addInInstance As AddIn
    ' Handle Reference events.
    Public WithEvents refEvents As VSLangProj.ReferencesEvents
    Private outputWinPane As OutputWindowPane
Public Sub OnBeginShutdown(ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnBeginShutdown
End Sub

Public Sub OnAddInsUpdate(ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnAddInsUpdate
End Sub

Public Sub OnStartupComplete(ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnStartupComplete
End Sub

Public Sub OnDisconnection(ByVal RemoveMode As Extensibility.ext_DisconnectMode, ByRef custom As System.Array) _
 Implements Extensibility.IDTExtensibility2.OnDisconnection
    ' Turns off reference event handling when the add-in shuts down.
    refEvents = Nothing
End Sub

Public Sub OnConnection(ByVal application As Object, _
 ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef _
 custom As System.Array) Implements _
 Extensibility.IDTExtensibility2.OnConnection

    _applicationObject = CType(application, EnvDTE80.DTE2)
    _addInInstance = CType(addInInst, EnvDTE.AddIn)

    Dim events As EnvDTE80.Events2
    events = CType(_applicationObject.Events, Events2)
    ' Send event messages to the Output window.
    Dim outputWindow As OutputWindow
    outputWindow = CType(_applicationObject.Windows.Item _
    (Constants.vsWindowKindOutput).Object, EnvDTE.OutputWindow)
    outputWinPane = outputWindow.OutputWindowPanes.Add _
    ("Reference Event Information ")

    ' Retrieve the event objects from the automation model.
    ' Visual Basic automatically connects the method handler since 
    ' the object variable declaration uses the 'WithEvents' handler.
    refEvents = CType(events.GetObject("CSharpReferencesEvents"), _
    ReferencesEvents)
End Sub
    ' Handle all of the various reference-related events.
    Sub ReferenceRemoved(ByVal removedRef As VSLangProj.Reference) _
    Handles refEvents.ReferenceRemoved
    outputWinPane.OutputString("ReferencesEvents.ReferenceRemoved" _
    & ControlChars.Lf)
    outputWinPane.OutputString("The reference to " & removedRef.Name _
    & " was removed." & ControlChars.Lf)
End Sub

Sub ReferenceChanged(ByVal changedRef As VSLangProj.Reference) _
    Handles refEvents.ReferenceChanged
    outputWinPane.OutputString("ReferencesEvents.ReferenceChanged" _
    & ControlChars.Lf)
    outputWinPane.OutputString("The reference to " & changedRef.Name _
    & " was changed." & ControlChars.Lf)
End Sub
Sub ReferenceAdded(ByVal addedRef As VSLangProj.Reference) _
    Handles refEvents.ReferenceAdded
    outputWinPane.OutputString("ReferencesEvents.ReferenceAdded" _
    & ControlChars.Lf)
    outputWinPane.OutputString("The reference to " & addedRef.Name _
    & " was added." & ControlChars.Lf)
End Sub

End Class

Compilando o código

Para compilar este código, crie um novo Visual Studio projeto suplemento em Visual Basic e substitua o código de classe conectar com o código de exemplo. Para obter informações sobre como executar um suplemento, consulte Como: Controlarar Adicionar-ins com o Adicionar - in Gerente.

Consulte também

Tarefas

Como: Responder a eventos em um projeto específico (translation from VPE for Csharp Visual)

Referência

Declaração Imports (Tipo e Namespace .NET)

Outros recursos

Respondendo a eventos de automação

Respondendo a eventos (Visual Basic e Visual translation from VPE for Csharp projetos)