2012-04-27 13 views
10

Sto scrivendo un'estensione di Visual Studio 2008. Voglio ricevere una notifica ogni volta che DTE.ActiveDocument cambia, quindi posso aggiornare qualcosa in un pannello personalizzato che esegue una funzionalità simile a Solution Explorer. Devo ancora trovare qualsiasi evento che si verifica quando ciò accade. C'è un tale evento?Ricevi notifiche quando DTE.ActiveDocument cambia

Concretamente, sto cercando qualcosa di simile:

var dte = GetService(typeof(EnvDTE._DTE)) as EnvDTE.DTE; 
dte.Events.DTEEvents.ActiveDocumentChanged += s => { 
    // implies dte.ActiveDocument has changed value 
} 

risposta

6

I belive siete alla ricerca di questo evento

_applicationObject.Events.WindowEvents.WindowActivated 

controllo GotFocus.Document == null se si interessa solo di attivazione documentare i cambiamenti

Spero che questo aiuti

1

È inoltre possibile implementare IVsRunningDocTableEvents, registrarsi come ascoltatore, quindi verrà chiamato il metodo OnBeforeDocumentWindowShow prima di passare a un documento.

class RdtEvents : IVsRunningDocTableEvents 
{ 
    RdtEvents() 
    { 
     var rdt = Package.GetGlobalService(typeof(SVsRunningDocumentTable)); 
     uint evtCookie; 
     rdt.AdviseRunningDocTableEvents(this, out evtCookie); 
    } 

    // ... 

    int IVsRunningDocTableEvents.OnBeforeDocumentWindowShow(uint docCookie, int fFirstShow, IVsWindowFrame pFrame) 
    { 
     // ... 
    } 
} 
Problemi correlati