2012-04-27 14 views
10

Estoy escribiendo una extensión de Visual Studio 2008. Deseo recibir notificaciones cada vez que cambie DTE.ActiveDocument, de modo que pueda actualizar algo en un panel personalizado que realice una función similar al explorador de soluciones. Aún no he encontrado ningún evento que ocurra cuando esto sucede. ¿Hay tal evento?Obtenga una notificación cuando DTE.ActiveDocument cambie

Concretamente, estoy buscando algo como:

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

Respuesta

6

I belive que busca este evento

_applicationObject.Events.WindowEvents.WindowActivated 

cheque GotFocus.Document == null si sólo está interesado en la activación de los cambios del documento

Espero que esto ayude

1

También puede implementar IVsRunningDocTableEvents, regístrese como oyente y, a continuación, se llamará al método OnBeforeDocumentWindowShow antes de cambiar 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) 
    { 
     // ... 
    } 
} 
Cuestiones relacionadas