2010-08-03 27 views
17

Tôi đã tạo một ứng dụng đơn lẻ và muốn kích hoạt một cửa sổ đã mở nếu người dùng khởi động ứng dụng nhiều lần. Điều này hoạt động tốt tuy nhiên tôi có vấn đề, rằng nếu cửa sổ đã mở vượt ra ngoài một cửa sổ ứng dụng khác, tôi phải mang nó đến phía trước.Làm thế nào để đưa một cửa sổ WPF lên phía trước?

Tôi đã thử cửa sổ.Focus() và window.Show() nhưng cả hai dường như không hoạt động. Là giải pháp thay thế tôi sử dụng…

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

… công việc này có vẻ nhưng rất xấu. Có ai là một giải pháp tốt hơn cho việc này không?

Trả lời

30

Bạn có thể sử dụng thay vì Window.Activate:

window.Activate(); 

Đây là equivelent WPF để gọi SetForegroundWindow.

+1

Hoàn hảo! Cảm ơn. – HCL

+1

Để khôi phục cửa sổ nếu nó được giảm thiểu sử dụng: 'if (myWindow.WindowState == WindowState.Minimized) myWindow.WindowState = WindowState.Normal;' Nó cũng sẽ giữ trạng thái Tối đa hóa của cửa sổ, không hoàn nguyên lại thành Normal. – r41n

Các vấn đề liên quan