Jak: reagovat na události webové odkazy (Visual C#)
Prostředí události definované v VSLangProj a VSLangProj80 jsou specifické pro Visual C# nebo Visual Basic projekty.VSLangProjWebReferencesEventsje nový typ v Visual Studio 2005.Je aktivována, když je přidána či odebrána z webového odkazu nebo jeho vlastnosti jsou upraveny Visual Basic nebo Visual C# projektu.
V tomto příkladu Visual C# připojení pomocí metody zpracování události pro konkrétní projekt VSLangProjWebReferencesEvents vlastnost.
[!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í s odkazy na Web pomocí aplikace Visual C#
Vytvoření Visual Studio přidat projekt v Visual C#.
Na projektu nabídky, klepněte na tlačítko Přidat odkaz na, klepněte .NET kartě vyberte první VSLangProj a VSLangProj80 a klepněte na tlačítko OK.
Přidat using VSLangProj; a using VSLangProj80; na začátek souboru Connect.cs.
Ve třídě připojit inicializovat proměnné pro zpracování VSLangProjWebReferencesEvents objektu.
private DTE2 _applicationObject; private AddIn _addInInstance; private VSLangProj80.VSLangProjWebReferencesEvents webRefEvents;
V tomto příkladu je název proměnné webRefEvents.
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í.
Přidáte následující způsob volání metody OnConnection.
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Call the WebReferenceEventsSample method. WebReferenceEventsSample (_applicationObject); }
Přidáte deklarace metody WebReferenceEventsSample přímo pod OnConnection metoda a následující prohlášení.
public void WebReferenceEventsSample(DTE2 dte) { Solution2 soln = (Solution2)_applicationObject.Solution; Project proj; VSProject2 vsproj; String webServiceRef; proj = soln.Projects.Item(1); }
Prohlášení proj = soln.Projects.Item(1); vyžaduje, je otevřen v projektu Visual Studio integrované vývojové prostředí (IDE) při spuštění v tomto příkladu.Projekt musí být zejména Visual Basic nebo Visual C# projektu, protože VSLangProjWebReferencesEvents objekt je specifický pro tyto typy projektů.
Odevzdaných na projektu VSProject2 přidáním následujícího kódu do metody WebReferenceEventsSample objektu.
// Get a reference to the VSProject2 object. vsproj = (VSProject2)proj.Object;
Načtení objektů událostí z automatizace modelu v metodě WebReferenceEventsSample.
webRefEvents = vsproj.Events2.VSLangProjWebReferencesEvents;
V metodě WebReferenceEventsSample připojení obslužné rutiny události.
webRefEvents.OnAfterWebReferenceAdded += new _dispVSLangProjWebReferencesEvents_OnAfterWebReferenceAddedEventHandler (webRefEvents_OnAfterWebReferenceAdded); webRefEvents.OnBeforeWebReferenceRemoved += new _dispVSLangProjWebReferencesEvents_OnBeforeWebReferenceRemovedEventHandler (webRefEvents_OnBeforeWebReferenceRemoved); webRefEvents.OnWebReferenceChanged += new _dispVSLangProjWebReferencesEvents_OnWebReferenceChangedEventHandler (webRefEvents_OnWebReferenceChanged);
V metodě WebReferenceEventsSample přidáte do projektu odkaz na webové služby.
// Add a Web reference to the folder. // Replace the "<web reference>" with an actual Web service. MessageBox.Show("Adding a Web reference.", "Information"); webServiceRef = "<web reference>"; vsproj.AddWebReference(webServiceRef);
Chcete-li programově přidat odkaz na webovou službu k projektu, je nutné nahradit zástupný text <web reference>, kód s URL aktuální webové služby.
Tento krok způsobí OnAfterWebReferenceAdded událostí na oheň, spustíte-li tento doplněk.
Přidáte postupy pro každou událost související s pod metodu WebReferenceEventsSample objektu události.
void webRefEvents_OnWebReferenceChanged(object pDispatch) { MessageBox.Show("A Web reference was changed."); } void webRefEvents_OnBeforeWebReferenceRemoved(object pDispatch) { MessageBox.Show("A Web reference was removed."); } void webRefEvents_OnAfterWebReferenceAdded(object pDispatch) { MessageBox.Show("A Web reference was added." + pDispatch.Name); }
Konečně aby se zabránilo Visual Studio od zpomalení systému nadále sledovat události související se okno po ukončení v, zakázat zpracování událostí v metodě OnDisconnection.
public void OnDisconnection(ext_DisconnectMode disconnectMode, ref Array custom) { // If the delegate handlers have been connected, then // disconnect them here. // If you do not do this, the handlers may still // fire because garbage collection has not removed them. if (webRefEvents != null) { webRefEvents.OnAfterWebReferenceAdded -= new _dispVSLangProjWebReferencesEvents _OnAfterWebReferenceAddedEventHandler (webRefEvents_OnAfterWebReferenceAdded); webRefEvents.OnBeforeWebReferenceRemoved -= new _dispVSLangProjWebReferencesEvents _OnBeforeWebReferenceRemovedEventHandler (webRefEvents_OnBeforeWebReferenceRemoved); webRefEvents.OnWebReferenceChanged -= new _dispVSLangProjWebReferencesEvents _OnWebReferenceChangedEventHandler (webRefEvents_OnWebReferenceChanged); } }
Kompletní kód je uveden v příkladu v části tohoto tématu.
Chcete-li vytvořit doplněk, klepněte na tlačítko Sestavit řešení na sestavení nabídce.
Otevřít Visual C# nebo Visual Basic v projektu Visual Studio integrované vývojové prostředí (IDE).
Na Nástroje nabídky, klepněte na tlačítko Správce doplňkůa vyberte doplněk z Správce doplňků dialogové okno.Klepněte na tlačítko OK spustit doplněk.
Testování zpracování událostí VSLangProjWebReferencesEvents
OnAfterWebReferenceAdded Události dojde po při spuštění doplňku, protože v příkladu přidá odkaz na webovou službu programově.
Test OnWebReferenceChanged událostí:
Rozbalte Odkazů na webové ve složce Aplikaci Solution Explorer.
Vyberte webové služby a pravým tlačítkem myši.
Vyberte Vlastnosti z rozevírací nabídky.
Na Vlastnosti okna změnit chování URL z dynamického na statické podle výběru statické z Chování URL pole se seznamem.
Test OnBeforeWebReferenceRemoved událostí:
Vyberte webové služby a pravým tlačítkem myši.
Vyberte Odstranit z rozevírací nabídky.
Příklad
Následující příklad je základní Visual Studio , který ukazuje, jak reagovat na webové odkazy pomocí události Visual Studio automatizace.
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using VSLangProj;
using VSLangProj2;
using VSLangProj80;
using System.Windows.Forms;
namespace MyAddin
{
public class Connect : Object, IDTExtensibility2
{
public Connect()
{
}
public void OnConnection(object application,
ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
// Call the WebReferenceEventsSample method.
WebReferenceEventsSample(_applicationObject);
}
public void WebReferenceEventsSample(DTE2 dte)
{
try
{
Solution2 soln =
(Solution2)_applicationObject.Solution;
Project proj;
VSProject2 vsproj;
String webServiceRef;
proj = soln.Projects.Item(1);
// Get a reference to the VSProject2 object.
vsproj = (VSProject2)proj.Object;
//Connect Web references events.
webRefEvents =
vsproj.Events2.VSLangProjWebReferencesEvents;
webRefEvents.OnAfterWebReferenceAdded +=new
_dispVSLangProjWebReferencesEvents
_OnAfterWebReferenceAddedEventHandler
(webRefEvents_OnAfterWebReferenceAdded);
webRefEvents.OnBeforeWebReferenceRemoved += new
_dispVSLangProjWebReferencesEvents
_OnBeforeWebReferenceRemovedEventHandler
(webRefEvents_OnBeforeWebReferenceRemoved);
webRefEvents.OnWebReferenceChanged += new
_dispVSLangProjWebReferencesEvents
_OnWebReferenceChangedEventHandler
(webRefEvents_OnWebReferenceChanged);
// Create a Web references folder.
MessageBox.Show("Creating a Web references folder."
, "Information");
vsproj.CreateWebReferencesFolder();
// Add a Web reference to the folder.
// Replace the "<web reference>" with an
// actual Web service URL.
MessageBox.Show("Adding a Web reference."
, "Information");
webServiceRef = "<web reference>";
vsproj.AddWebReference(webServiceRef);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
void webRefEvents_OnWebReferenceChanged(object pDispatch)
{
MessageBox.Show("A Web reference was changed.");
}
void webRefEvents_OnBeforeWebReferenceRemoved(object pDispatch)
{
MessageBox.Show("A Web reference was removed.");
}
void webRefEvents_OnAfterWebReferenceAdded(object pDispatch)
{
MessageBox.Show("A Web reference was added.");
}
public void OnDisconnection(ext_DisconnectMode disconnectMode,
ref Array custom)
{
// If the delegate handlers have been connected, then
// disconnect them here.
// If you do not do this, the handlers may still
// fire because garbage collection has not removed them.
if (webRefEvents != null)
{
webRefEvents.OnAfterWebReferenceAdded -= new
_dispVSLangProjWebReferencesEvents
_OnAfterWebReferenceAddedEventHandler
(webRefEvents_OnAfterWebReferenceAdded);
webRefEvents.OnBeforeWebReferenceRemoved -= new
_dispVSLangProjWebReferencesEvents
_OnBeforeWebReferenceRemovedEventHandler
(webRefEvents_OnBeforeWebReferenceRemoved);
webRefEvents.OnWebReferenceChanged -= new
_dispVSLangProjWebReferencesEvents
_OnWebReferenceChangedEventHandler
(webRefEvents_OnWebReferenceChanged);
}
}
public void OnAddInsUpdate(ref Array custom)
{
}
public void OnStartupComplete(ref Array custom)
{
}
public void OnBeginShutdown(ref Array custom)
{
}
private DTE2 _applicationObject;
private AddIn _addInInstance;
private VSLangProj80.VSLangProjWebReferencesEvents webRefEvents;
}
}
Probíhá kompilace kódu
Tento kód kompilace, vytvořit nový Visual Studio přidat projekt v Visual C# 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 webové odkazy (Visual Basic)