2010-08-03 70 views
17

我已經創建了一個單實例應用程序,並且想要在用戶多次啓動應用程序時激活一個已經打開的窗口。這工作正常,但我有問題,如果已經打開的窗口超出了另一個應用程序窗口,我必須把它放在前面。我試過window.Focus()和window.Show(),但他們都似乎不工作。作爲一種解決方法,我使用...如何將WPF窗口放在前面?

bool oldTopMost = window.Topmost; 
window.Topmost = true; 
window.Topmost = oldTopMost; 
window.Focus(); 

...這樣做的工作,但在我看來非常醜陋。有沒有人有更好的解決方案?

回答

30

你可以使用Window.Activate代替:

window.Activate(); 

這是WPF equivelent調用SetForegroundWindow

+1

完美!謝謝。 – HCL 2010-08-03 18:29:11

+1

要恢復窗口,如果它被最小化使用:'if(myWindow.WindowState == WindowState.Minimized)myWindow.WindowState = WindowState.Normal;'它也將保持窗口的最大化狀態,而不是恢復到正常狀態。 – r41n 2017-02-21 08:37:08