2010-08-03 13 views
17

Ich habe eine Einzelinstanz-Anwendung erstellt und möchte ein bereits geöffnetes Fenster aktivieren, wenn der Benutzer die App mehrere Male startet. Das funktioniert gut, aber ich habe das Problem, dass, wenn das bereits geöffnete Fenster hinter einem anderen Anwendungsfenster ist, ich es nach vorne bringen muss.Wie bringt man ein WPF-Fenster nach vorne?

Ich habe window.Focus() und window.Show() versucht, aber beide scheinen nicht zu funktionieren. Als Workaround verwende ich ...

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

... das macht den Job aber sieht mir sehr hässlich aus. Hat jemand eine bessere Lösung dafür?

Antwort

30

könnten Sie Window.Activate verwenden stattdessen:

window.Activate(); 

Dies ist die WPF equivelent SetForegroundWindow zu nennen.

+1

Perfekt! Vielen Dank. – HCL

+1

Um das Fenster wiederherzustellen, wenn es minimiert wurde, verwende: 'if (myWindow.WindowState == WindowState.Minimized) myWindow.WindowState = WindowState.Normal;' Es wird auch den maximierten Zustand des Fensters beibehalten und nicht wieder auf Normal zurückgesetzt. – r41n

Verwandte Themen