Sdílet prostřednictvím


Postupy: Reagování na události webových odkazů (Visual Basic)

Události prostředí definované v VSLangProj a VSLangProj80 jsou specifické pro projekty Visual C# a Visual Basic.VSLangProjWebReferencesEvents je nový typ v Visual Studio.Je aktivována, když je webový odkaz přidán či odebrán z projektu Visual Basic nebo Visual C#, nebo pokud dojde k úpravě vlastností webového odkazu v projektu Visual Basic nebo Visual C#.

V tomto příkladu se používá Visual Basic k připojení metod rutin události ke konkrétnímu projektu pomocí vlastnosti VSLangProjWebReferencesEvents.

[!POZNÁMKA]

Váš počítač může zobrazit jiné názvy nebo umístění pro některé prvky uživatelského rozhraní sady Visual Studio v následujících pokynech.Tyto prvky jsou určeny verzí aplikace Visual Studio a použitým nastavením.Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Zpracování událostí souvisejících s webovými odkazy v jazyce Visual Basic

  1. Vytvořte projekt doplňku Visual Studio v Visual Basic.

  2. V nabídce Projekt klepněte na tlačítko Přidat odkaz, klepněte na kartu .NET, vyberte první VSLangProj a VSLangProj80 a klepněte na tlačítko OK.

  3. Přidejte Imports VSLangProj a Imports VSLangProj80 na začátek souboru Connect.vb.

  4. Ve třídě Connect inicializujte proměnnou ke zpracování objektu VSLangProjWebReferencesEvents.

    Public Class Connect
        Implements IDTExtensibility2
        Dim _applicationObject As DTE2
        Dim _addInInstance As AddIn
        Public WithEvents webRefEvents As _ 
        VSLangProj80.VSLangProjWebReferencesEvents
    

    V tomto příkladu je proměnná pojmenována jako webRefEvents.

    Ostatní objekty v modelu automatizace se vztahují na jiné typy událostí, které jsou specifické pro projekt.Například ImportsEvents se vyvolá, když je přidán či odebrán import z kolekce Imports.BuildManagerEvents platí pro události týkající se dočasného sestavení z výstupů vlastních nástrojů.Další informace o objektu BuildManager najdete v tématu Představení objektu BuildManager.Úplný seznam událostí, které jsou specifické pro typy projektů, naleznete v tématu Objekty událostí (specifické pro typy projektů).Seznam obecné automatizace událostí naleznete v tématu Automatizace objektů události.

  5. Přidejte následující volání metody do metody OnConnection.

    Public Sub OnConnection(ByVal application As Object, _
     ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _
     ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        WebReferenceEventsSample(_applicationObject)
    End Sub
    
  6. Přidáte deklaraci metody WebReferenceEventsSample přímo pod metodu OnConnection.

    Sub WebReferenceEventsSample(ByVal dte As DTE2)
    
    End Sub
    
  7. Na začátek metody WebReferenceEventsSample přidejte následující deklarace.

    Dim soln As Solution2 = CType(_applicationObject.Solution, Solution2)
    Dim proj As Project
    Dim vsproj As VSProject2
    Dim webServiceRef As String
    proj = soln.Projects.Item(1)
    

    Prohlášení proj = soln.Projects.Item(1) vyžaduje, aby byl projekt otevřen v integrovaném vývojovém prostředí (IDE) Visual Studio při spuštění tohoto příkladu.Projekt musí být zejména v jazycích Visual Basic nebo Visual C#, protože objekt VSLangProjWebReferencesEvents je specifický pro tyto typy projektů.

  8. Přetypujte projekt na objekt VSProject2 přidáním následujícího kódu do metody WebReferenceEventsSample.

    ' Cast the project to a VSProject2.
    vsproj = CType(proj.Object, VSProject2)
    
  9. Také v metodě WebReferenceEventsSample načtěte objekty událostí z modelu automatizace.

    webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
    
  10. Připojte obslužné rutiny události.

    AddHandler webRefEvents.OnAfterWebReferenceAdded, _
     AddressOf WebReferenceAdded
    AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
     AddressOf WebReferenceRemoved
    AddHandler webRefEvents.OnWebReferenceChanged, _
     AddressOf WebReferenceChanged
    
  11. Přidejte webový odkaz na projekt.

    ' Create a Web references folder.
    MsgBox("Creating a Web references folder.", MsgBoxStyle.Information)
    vsproj.CreateWebReferencesFolder()
    ' Add a Web reference to the folder.
    ' Replace the "<web reference>" with an actual Web service URL.
    MsgBox("Adding a Web reference.", MsgBoxStyle.Information)
    webServiceRef = "<web reference>"
    vsproj.AddWebReference(webServiceRef)
    

    Chcete-li programově přidat odkaz webové služby do projektu, je třeba nahradit zástupný text, <web reference> v kódu adresou URL aktuální webové služby.

    Tento krok způsobí, že se událost OnAfterWebReferenceAdded vyvolá při spuštění tohoto doplňku.

  12. Přidejte procedury pro každou událost týkající objektu události.

    Sub WebReferenceRemoved(ByVal removedRef As Object)
        MsgBox("A Web reference was removed.")
    End Sub
    Sub WebReferenceChanged(ByVal changedRef As Object)
        MsgBox("A Web reference was changed.")
    End Sub
    Sub WebReferenceAdded(ByVal addedRef As Object)
        MsgBox("A Web reference was added.")
    End Sub
    
  13. Nakonec, aby se zabránilo zpomalení systému aplikací Visual Studio tak, že nadále budou sledovány události týkající se oken po zavření doplňku, zakažte zpracování událostí.V Visual Basic se to provádí nastavením obslužné rutiny události Nothing.

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

    Úplný kód je vypsán v oddíle Příklad tohoto tématu.

  14. Pokud chcete sestavit doplněk, klikněte na Sestavit řešení v nabídce Sestavení.

  15. Otevřete projekt Visual C# nebo Visual Basic v integrovaném vývojovém prostředí (IDE) Visual Studio.

  16. V nabídce Nástroje klepněte na tlačítko Správce doplňků a vyberte doplněk z dialogového okna Správce doplňků.Klepněte na tlačítko OK a spusťte tak doplněk.

Chcete-li otestovat zpracování události VSLangProjWebReferencesEvents

  1. Událost OnAfterWebReferenceAdded je spuštěna jednou při spuštění doplňku, protože příklad přidá odkaz na webovou službu programově.

  2. Otestování události OnWebReferenceChanged:

    • Rozbalte složku Webové odkazy v Průzkumníku řešení.

    • Vyberte webovou službu a klepněte na ni pravým tlačítkem.

    • Vyberte možnost Vlastnosti z rozevírací nabídky.

    • V okně Vlastnosti změňte chování adresy URL z dynamického na statické výběrem možnosti Statické v poli se seznamem Chování adresy URL.

  3. Otestování události OnBeforeWebReferenceRemoved:

    • Vyberte webovou službu a klepněte na ni pravým tlačítkem.

    • Vyberte možnost Odstranit z rozevírací nabídky.

Příklad

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

Public Class Connect
    Implements IDTExtensibility2
    Dim _applicationObject As DTE2
    Dim _addInInstance As AddIn
    Public WithEvents webRefEvents As _
    VSLangProj80.VSLangProjWebReferencesEvents
    Public Sub New()
    End Sub
    Public Sub OnConnection(ByVal application As Object, _
     ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object _
    , ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        _applicationObject = CType(application, DTE2)
        _addInInstance = CType(addInInst, AddIn)
        WebReferenceEventsSample(_applicationObject)
    End Sub
    Sub WebReferenceEventsSample(ByVal dte As DTE2)
        Try
            Dim soln As Solution2 = CType(_applicationObject.Solution _
            , Solution2)
            Dim proj As Project
            Dim vsproj As VSProject2
            Dim webServiceRef As String
            proj = soln.Projects.Item(1)
            ' Cast the project to a VSProject2.
            vsproj = CType(proj.Object, VSProject2)
            webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents
            AddHandler webRefEvents.OnAfterWebReferenceAdded, _
            AddressOf WebReferenceAdded
            AddHandler webRefEvents.OnBeforeWebReferenceRemoved, _
            AddressOf WebReferenceRemoved
            AddHandler webRefEvents.OnWebReferenceChanged, _
            AddressOf WebReferenceChanged
            ' Create a Web references folder.
            MsgBox("Creating a Web references folder." _
            , MsgBoxStyle.Information)
            vsproj.CreateWebReferencesFolder()
            ' Add a Web reference to the folder.
            ' Replace the place holder <web reference> with
            ' a Web service URL.
            MsgBox("Adding a Web reference.", MsgBoxStyle.Information)
            webServiceRef = "<web reference>"
            vsproj.AddWebReference(webServiceRef)
        Catch ex As System.Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
    Sub WebReferenceRemoved(ByVal removedRef As Object)
        MsgBox("A Web reference was removed.")
    End Sub
    Sub WebReferenceChanged(ByVal changedRef As Object)
        MsgBox("A Web reference was changed.")
    End Sub
    Sub WebReferenceAdded(ByVal addedRef As Object)
        MsgBox("A Web reference was added.")
    End Sub
    Public Sub OnDisconnection(ByVal disconnectMode As _
    ext_DisconnectMode, ByRef custom As Array) Implements _
    IDTExtensibility2.OnDisconnection
        ' Turns off Web reference event handling when the 
        ' add-in shuts down.
        webRefEvents = Nothing
    End Sub
    Public Sub OnAddInsUpdate(ByRef custom As Array) _
    Implements IDTExtensibility2.OnAddInsUpdate
    End Sub
    Public Sub OnStartupComplete(ByRef custom As Array) _
    Implements IDTExtensibility2.OnStartupComplete
    End Sub
    Public Sub OnBeginShutdown(ByRef custom As Array) _
    Implements IDTExtensibility2.OnBeginShutdown
    End Sub
End Class

Probíhá kompilace kódu

Chcete-li tento kód zkompilovat, vytvořte nový projekt doplňku Visual Studio v Visual Basic a nahraďte kód ve třídě Připojit kódem v příkladu.Další informace o spuštění doplňku naleznete v části Postupy: Řízení doplňků pomocí Správce doplňků.

Viz také

Úkoly

Postupy: Reagování na události webových odkazů (Visual C#)

Další zdroje

Reagování na události automatizace

Reagování na události (projekty Visual Basic a Visual C#)