2009-05-26 70 views

回答

7

你正在尋找的事件是Form.ActivatedForm.Deactivated

+0

感謝 - 這是我的傾向,但我不知道它是否會工作,因爲該應用程序有一個選項卡式界面。我會檢查它。 – subrama6 2009-05-26 15:30:32

0

對於WPF,FocusChanged在窗口上。 Winforms中應該有類似的事件。你可以在Visual Studio上找到使用intellisense。

激活/禁用似乎是標準的。

0

處理的Control.GotFocus和Control.LostFocus事件的主要窗口。

1

用途:

this.LostFocus 

和:

this.GotFocus 

在最父窗體/窗口

2

我好奇這種技術如何在各種條件下工作一個MDI應用程序。事實證明,這不適用於所有情況。

如果你的應用程序是一個MDI應用程序,那麼當應用程序本身丟失/重新獲得焦點時(如其他答案中所述),如果MDI表單中的非模態窗體具有焦點,則主MDI表單將失去/獲得焦點。但是,如果模式對話框打開(對應用本身模式),則主MDI表單不會鬆動/獲得焦點(至少激活/停用的事件似乎不會觸發)。換句話說,如果你所處理的只是MDI表單的激活/停用事件,那麼當應用程序失去/獲得焦點時,如果模態表單具有焦點,則可能會錯過。

因此,看起來這個工作,你需要同時處理MDI窗體的激活/停用事件以及模態打開的任何窗體上的事件(通過ShowDialog)。

+0

您還可以通過[檢測哪個應用程序具有焦點] [1]來過濾停用事件,您可以將其放入主窗口的停用處理程序中,模態對話應在退出時返回焦點。 [1] http://stackoverflow.com/questions/2183541/c-detecting-which-application-has-focus – 2012-11-19 17:49:48

相關問題