2012-04-27 14 views
10

Visual Studio 2008拡張機能を作成しています。 DTE.ActiveDocumentが変更されるたびに通知を受けたいので、ソリューションエクスプローラと同様の機能を実行するカスタムパネルで何かを更新できます。私はまだこれが起こったときに発生するイベントを見つける必要がありません。そんなイベントはありますか? [ドキュメントの活性化にのみ関心DTE.ActiveDocumentが変更されたときに通知を受け取ります。

を変更した場合、私はあなたがこのイベントを探している

_applicationObject.Events.WindowEvents.WindowActivated 

チェックGotFocus.Document == nullを信じ

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

答えて

6

具体的には、私のようなものを探していますこれがうまくいきたいです

1

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) 
    { 
     // ... 
    } 
} 
関連する問題