Como: responder a eventos em um projeto específico (Visual Basic)
O modelo de automação inclui objetos que podem ser usados para responder a eventos de ambiente na Visual Studio o ambiente de desenvolvimento integrado (IDE).Os eventos de ambiente definidos na VSLangProj e VSLangProj80 são específicas para Visual C# e Visual Basic projetos.Por exemplo, ImportsEvents é disparado quando uma importação é adicionada ou removida de um Imports coleção.
Este exemplo usa Visual Basic para adicionar uma ReferencesEvents o manipulador de eventos, que é específico para um tipo de projeto, para um projeto do suplemento.ReferencesEventssão gerados quando uma referência é alterada, adicionada ou removida um Visual C# ou Visual Basic project.
Observação |
---|
As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o General Development Settings ativo.Para alterar as configurações, escolha Import and Export Settings sobre o Ferramentas menu.Para obter mais informações, consulte Configurações de Visual Studio. |
Para manipular os eventos relacionados à referência usando Visual Basic
Criar um Visual Studio projeto de suplemento no Visual Basic.
Adicionar Imports VSLangProj na parte superior do arquivo Connect. vb.
Sobre o projeto menu, clique em Add Reference, clique no .NET , selecione o primeiro VSLangProje clique em OK.
Na classe Connect, inicializar uma variável para lidar com 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
Neste exemplo, a variável é chamada refEvents.
Outros objetos no modelo de automação referem-se 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.BuildManagerEventsaplica-se para eventos relacionados a assemblies temporários criados a partir de saídas de ferramentas personalizadas.Para obter mais informações sobre BuildManager de objeto, consulte Introdução ao objeto BuildManager.Para obter uma lista completa dos eventos que são específicos para tipos de projetos, consulte Objetos de evento (específicas para tipos de projetos).Para obter uma lista de eventos de automação gerais, consulte Objetos de evento de automação.
No OnConnection método, inicializar uma variável para interceptar eventos.Neste exemplo, a variável é chamada de eventos.
Dim events As EnvDTE80.Events2 events = CType(_applicationObject.Events, Events2)
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 ")
Também na OnConnection método, recuperar os objetos de evento do modelo de automação.
refEvents = CType(events.GetObject("CSharpReferencesEvents"),_ ReferencesEvents)
Visual Studioconecta-se automaticamente o manipulador do método como a declaração de variável de objeto usa a WithEvents (Visual Basic) 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 eventos, substitua a seqüência, CSharpReferencesEvents com VBReferencesEvents.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).
Adicione os procedimentos para cada evento relacionado ao 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 os eventos definidos para ReferenceAdded, ReferenceRemoved, ReferenceChanged, como mostra a listagem completa do exemplo a seguir.
Por fim, para evitar Visual Studio da redução do seu sistema continuando a monitorar eventos relacionados a janela depois de fechar o add-in, você deve desabilitar a manipulação de eventos.Na Visual Basic, isso é feito, definindo o manipulador de eventos para 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 a manipulação de eventos se o suplemento ou o IDE for desligado enquanto o add-in ainda está em execução.Quando o IDE for desligado, o todos os suplementos em execução são desligados automaticamente primeiro.
Exemplo
O exemplo a seguir é um basic Visual Studio suplemento que demonstra como interceptar e manipular Visual C# os eventos de referência 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 esse código, crie um novo Visual Studio projeto de suplemento no Visual Basic e substitua o código da classe conectar-se com o código do exemplo.Para obter informações sobre como executar um suplemento, consulte Como: Add-Ins de controle, usando o Gerenciador de suplemento.
Consulte também
Tarefas
Como: responder a eventos em um projeto específico (Visual C#)
Referência
Importa instrução (.NET espaço para nome e tipo)
Outros recursos
Respondendo a eventos de automação
Respondendo a eventos (Visual Basic e projetos do Visual C#)