我的應用程序使用多個窗口的WinForms:如何確定窗口不再有效(無子窗口具有焦點)?
我想隱藏的情況下,一個特定的窗口的應用程序失去焦點(當活動窗口不是應用程序窗口)source
我處理Deactivate
事件我的主要形式。
private void MainForm_Deactivate(object sender, EventArgs e)
{
Console.WriteLine("deactivate");
if (GetActiveWindow() == this.Handle)
{
Console.WriteLine("isactive=true");
}
else
{
Console.WriteLine("isactive=false");
}
}
[DllImport("user32.dll")]
static extern IntPtr GetActiveWindow();
輸出始終
deactivate
isactive=true
,如果我的應用程序中的一個新的窗口接收焦點並且如果我點擊進入一個不同的應用程序我觀察到相同的行爲。
我希望GetActiveWindow
從Deactivate
處理程序調用時返回新的活動窗口的句柄。相反,它總是返回我的應用程序窗口的句柄。
這怎麼可能?停用事件是否「過早」處理? (雖然主要形式仍然活躍?)。
我如何檢測我的應用程序已失去焦點(我的應用程序窗口不是活動窗口)和其他應用程序獲得它沒有一個計時器運行GetActiveWindow?
我們是在談論一個MDI應用程序? – Bobby 2010-03-25 16:27:22
不,這不是一個MDI應用 – Marek 2010-03-25 16:28:52