2012-04-27 31 views
10

Tôi đang viết một phần mở rộng Visual Studio 2008. Tôi muốn được thông báo mỗi khi DTE.ActiveDocument thay đổi, vì vậy tôi có thể cập nhật nội dung nào đó trong bảng điều khiển tùy chỉnh thực hiện tính năng tương tự với trình khám phá giải pháp. Tôi chưa tìm thấy bất kỳ sự kiện nào xảy ra khi điều này xảy ra. Có một sự kiện như vậy không?Nhận thông báo khi DTE.ActiveDocument thay đổi

Cụ thể, tôi đang tìm một cái gì đó như:

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

Trả lời

6

I belive bạn đang tìm kiếm sự kiện này

_applicationObject.Events.WindowEvents.WindowActivated 

séc GotFocus.Document == null nếu bạn chỉ quan tâm đến kích hoạt tài liệu thay đổi

Hy vọng điều này sẽ giúp

1

Bạn cũng có thể triển khai IVsRunningDocTableEvents, đăng ký bản thân với tư cách người nghe và sau đó phương thức OnBeforeDocumentWindowShow sẽ được gọi trước khi tài liệu được chuyển sang.

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) 
    { 
     // ... 
    } 
} 
Các vấn đề liên quan