2009-11-17 75 views
0

我正在尋找類似'Form.Deactivate'事件但每個應用程序的東西。如果我在我的MainForm上使用Form.Deactivate事件,即使當我打開一個作爲父母的MainForm的模式對話框時,也會觸發此事件。應用程序'停用'事件

總而言之,當我的應用程序被停用時,會觸發一個事件。

+0

您打算如何處理這種情況? – 2009-11-17 09:24:25

+0

我將使用'FileSystemWatcher'組件開始觀看一些文件夾。 – Cornel 2009-11-17 09:29:09

+0

這[類似的帖子](http://stackoverflow.com/questions/245111/ascertaining-a-shutdown-is-closing-my-application)應該提供一個很好的起點。 – 2009-11-17 09:24:56

回答

6

這是一個奇怪的遺漏,但很容易修復。將其粘貼到您的啓動表單中:

protected void OnActivateApp(bool activate) { 
    Console.WriteLine("Activate {0}", activate); 
} 
protected override void WndProc(ref Message m) { 
    // Trap WM_ACTIVATEAPP 
    if (m.Msg == 0x1c) OnActivateApp(m.WParam != IntPtr.Zero); 
    base.WndProc(ref m); 
} 
+0

我認爲在這種情況下存在win32錯誤。如果我通過點擊任務欄(我的應用程序)最小化我的應用程序,應用程序似乎仍然被激活。這可以以某種方式解決嗎? – Cornel 2009-11-17 13:17:23

+0

當我嘗試它時,它工作正常。確保實際上有另一個可以獲得焦點的應用程序。使用Resize事件檢查WindowState以檢測最小化窗口的用戶。 – 2009-11-17 13:24:05

+0

非常感謝nobugz – Cornel 2009-11-17 13:28:13