2009-04-27 32 views
6

Bất cứ ai biết cách để xem cửa sổ Excel của dự án VSTO có đang hoạt động/đang tập trung không?VSTO: Tập trung ứng dụng

Tôi đang tìm kiếm số tương đương System.Windows.Window.IsActive.

Trả lời

7

Tôi cũng đã thất vọng với điều này. Bạn đang sử dụng một hộp thoại trong ứng dụng VSTO? Nếu vậy, những gì tôi đã làm là thêm một sự kiện vào việc đóng cửa một Windows Form/Dialog để kích hoạt các ứng dụng Office như sau (ví dụ là với Word, do đó có thể có sự khác biệt trong Excel):

//... VSTO Startup Event 
WindowsForm form = new WindowsForm(); 
form.FormClosed += new FormClosedEventHandler(form_FormClosed); 
form.Show(); 


void form_FormClosed(object sender, FormClosedEventArgs e) 
{ 
    this.Application.Activate();   
    this.Application.ActiveWindow.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateNormal; 

} 

tôi đã tìm thấy dòng này luôn nằm/trả về true:

this.ActiveWindow.Active() 

Nhưng làm việc này tốt hơn (biến bool toàn cầu "AppActive" để theo dõi các cửa sổ đang hoạt động):

//... VSTO Startup Event  
this.Application.WindowDeactivate += new Microsoft.Office.Interop.Word.ApplicationEvents4_WindowDeactivateEventHandler(Application_WindowDeactivate); 
this.Application.WindowActivate += new Microsoft.Office.Interop.Word.ApplicationEvents4_WindowActivateEventHandler(Application_WindowActivate); 

    void Application_WindowActivate(Microsoft.Office.Interop.Word.Document Doc, Microsoft.Office.Interop.Word.Window Wn) 
    { 
     AppActive = true; 
    } 

    void Application_WindowDeactivate(Microsoft.Office.Interop.Word.Document Doc, Microsoft.Office.Interop.Word.Window Wn) 
    { 
     AppActive = false; 
    } 
+1

giải pháp tốt đẹp Mike, công việc tuyệt vời. Tôi cảm thấy rằng mặc dù tài sản ActiveWindow.Active NÊN luôn luôn trở lại đúng sự thật, khác không phải là cửa sổ hoạt động của nó là nó? –

2

this.ActiveWindow.Activate() là phương pháp kích hoạt cửa sổ.

this.ActiveWindow.Active là thuộc tính cho bạn biết trạng thái của cửa sổ.

Các vấn đề liên quan