在Windows 7中,.NET 4.0我有一個可以通過複製下面的代碼,Visual Studio生成一個空白WPF應用再現了一個問題:ALT-TAB總是激活主窗口中的WPF應用程序與多個擁有的窗口
public MainWindow()
{
InitializeComponent();
Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
new Window() { Title = "Test", ShowInTaskbar = false, Owner = this }.Show();
}
- 運行的應用程序
- 激活二級窗口
- 使用Alt-Tab到其他正在運行的應用
- 使用鼠標來激活我們的WPF應用程序在任務欄
現在,WPF應用程序再次處於活動狀態,同時激活了輔助窗口並關閉了主窗口,這是預期的(和期望的)行爲。
現在做到這一點,而不是(僅第4步不同):
- 運行的應用程序
- 激活二級窗口
- 使用Alt-Tab到其他正在運行的應用程序
- 的Alt-Tab切換回我們的WPF應用程序
WPF應用程序再次處於活動狀態,但現在主窗口已激活。 將此代碼添加
private void Application_Activated(object sender, EventArgs e)
{
Windows[1].Activate();
}
到App.xaml.cs因爲現在在第二種情況下這兩個窗口被激活並不能解決問題。另外,單擊輔助窗口不會禁用主窗口。我必須再次單擊(已激活)主窗口和輔助窗口才能實現此目的。
我該如何避免這種情況(只有輔助窗口在兩種情況下都應該是有效的)?
你需要主窗口被激活(即使聚焦的)?如果不是,那麼'ShowDialog()'而不是'Show()'應該適合你。 – icebat
是的,主窗口必須是獨立的。這只是一個最簡單的例子來說明問題,它將是一個更大的應用程序。這只是我想消除的奇怪行爲。想象一下像Visual Studio這樣的東西 - 如果我將文檔浮出主窗口,然後按Alt-Tab兩次,只有浮動窗口仍然被激活,而不是主窗口。如果主窗口處於活動狀態,即使不應該出現問題,我也會正確處理輸入問題。 – Golvellius