Sdílet prostřednictvím


Jak: reagovat na události v konkrétní projekt (Visual Basic)

Automatizace modelu obsahuje objekty, které lze reagovat na události prostředí v Visual Studio integrované vývojové prostředí (IDE).Prostředí události definované v VSLangProj a VSLangProj80 jsou specifické pro Visual C# a Visual Basic projekty.Například ImportsEvents je aktivována při importu je přidána či odebrána z Imports kolekce.

V tomto příkladu Visual Basic přidat ReferencesEvents obslužnou rutinu události, které je specifické pro typ projektu přidat do projektu.ReferencesEventsje aktivována při změně, přidány do nebo z odkazu Visual C# nebo Visual Basic projektu.

[!POZNÁMKA]

Dialogová okna a příkazy v nabídkách menu, které vidíte, se mohou lišit od těch popsaných v nápovědě, v závislosti na vašich aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty s aktivní Obecné nastavení pro vývoj.Chcete-li změnit nastavení, zvolte Import and Export Settings v menu Nástroje.Další informace naleznete v tématu Nastavení aplikace Visual Studio.

Zpracování události související reference jazyka Visual Basic

  1. Vytvoření Visual Studio přidat projekt v Visual Basic.

  2. Přidat Imports VSLangProj na začátek souboru Connect.vb.

  3. Na projektu nabídky, klepněte na tlačítko Přidat odkaz na, klepněte .NET karta, vyberte první VSLangProja klepněte na tlačítko OK.

  4. Ve třídě připojit inicializovat proměnné pro zpracování ReferencesEvents objektu a další zpracování 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
    

    V tomto příkladu je název proměnné refEvents.

    Jiné objekty automatizace modelu se vztahují na jiné typy událostí, které jsou specifické pro projekt.Například ImportsEvents je aktivována při importu je přidána či odebrána z Imports kolekce.BuildManagerEventsse vztahuje na události týkající se dočasného sestavení z výstupů vlastní nástroje.Další informace o BuildManager objekt, viz Úvod do objektu Správce BuildManager.Úplný seznam událostí, které jsou specifické pro typy projektů, viz Objekty událostí (specifické typy projektů).Seznam Obecná automatické události naleznete v tématu Automatizace objekty událostí.

  5. V OnConnection metody je proměnná zachytit události initialize.V tomto příkladu má proměnná název události.

        Dim events As EnvDTE80.Events2
        events = CType(_applicationObject.Events, Events2)
    
  6. V OnConnection metodu inicializace OutputWindow proměnné.

        Dim outputWindow As OutputWindow
        outputWindow = CType(_applicationObject.Windows.Item _
        (Constants.vsWindowKindOutput).Object, EnvDTE.OutputWindow)
        outputWinPane = outputWindow.OutputWindowPanes.Add_
        ("Reference Event Information ")
    
  7. Také v OnConnection metodu načtení objektů událostí z automatizace modelu.

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

    Visual StudioMetoda zpracování automaticky připojí, protože používá deklaraci proměnné objektu WithEvents (Visual Basic) popisovač.

    V tomto příkladu ReferencesEvents jsou specifické pro Visual C# projekty.Reagovat na události, které jsou specifické pro Visual Basic události, nahraďte řetězec, CSharpReferencesEvents s VBReferencesEvents.Další informace o určení řetězce pro události, které jsou specifické pro různé typy projektů, viz Objekty událostí (specifické typy projektů).

  8. Přidáte postupy pro každé události týkající se objektu události.Například ke zpracování události, která nastane při přidání odkazu použijete:

    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
    

    U ReferencesEvents, musí mít události definované pro ReferenceAdded, ReferenceRemoved, ReferenceChanged, jak je uvedeno v úplný seznam níže uvedený příklad.

  9. Konečně aby se zabránilo Visual Studio od nadále sledovat události související se okno po ukončení doplněk zpomalení systému, měli byste zakázat zpracování událostí.V Visual Basic, to se provádí nastavením obslužné rutiny události na Nothing.

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

    Vypne se zpracování událostí zda doplněk nebo IDE vypnutí doplněk při běhu.Při vypnutí IDE všechny spuštěné doplňky automaticky ukončeny první.

Příklad

Následující příklad je základní Visual Studio , který ukazuje, jak zachytit a zpracovat Visual C# události v referenční Visual Studio.Vždy, když dojde k události odkaz, je odeslána oznámení Výstup okna.

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

Probíhá kompilace kódu

Tento kód kompilace, vytvořit nový Visual Studio přidat projekt v Visual Basic a nahraďte kód třídy připojit kód v příkladu.Informace o spuštění v Postup: ovládání doplňky pomocí Správce doplňků.

Viz také

Úkoly

Jak: reagovat na události v konkrétní projekt (Visual C#)

Referenční dokumentace

Importuje příkaz (.NET oboru názvů a typ)

Další zdroje

Reakce na události automatizace

Reakce na události (Visual Basic a Visual C# projekty)