Ответ 1
Я верю, что вы ищете это событие
_applicationObject.Events.WindowEvents.WindowActivated
проверить GotFocus.Document == null
, если вас интересуют только изменения активации документа.
Надеюсь, что это поможет
Я пишу расширение Visual Studio 2008. Я хочу получать уведомления каждый раз, когда изменяется DTE.ActiveDocument, поэтому я могу что-то обновить на пользовательской панели, которая выполняет аналогичную функцию в explorer. Мне еще предстоит найти какое-либо событие, которое происходит, когда это произойдет. Есть ли такое событие?
Конкретно, я ищу что-то вроде:
var dte = GetService(typeof(EnvDTE._DTE)) as EnvDTE.DTE;
dte.Events.DTEEvents.ActiveDocumentChanged += s => {
// implies dte.ActiveDocument has changed value
}
Я верю, что вы ищете это событие
_applicationObject.Events.WindowEvents.WindowActivated
проверить GotFocus.Document == null
, если вас интересуют только изменения активации документа.
Надеюсь, что это поможет
Вы также можете реализовать IVsRunningDocTableEvents
, зарегистрировать себя как слушателя, а затем метод OnBeforeDocumentWindowShow
будет вызываться до того, как документ будет переключился на.
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)
{
// ...
}
}