2012-06-19 106 views
0

標題幾乎全部說明了這一切,但基本上我有一個主父窗口,偶爾會打開子窗口。現在可以從Windows 7任務欄中選擇一個子窗口,只有該窗口會顯示在前面。我希望它找到一種將父窗口鏈接到此命令的方法,以便每次選擇子窗口時,父窗口都會自動帶到最前面。當從任務欄中選擇子窗口時,將父窗口置於前面

我試圖使用子窗口'GotFocus event handler, but neither seemed to make a difference. I also tried the BringIntoView()`方法中的Focus()Topmost = true命令,但是再次沒有快樂。有沒有人看過這個或知道一個方法來實現這個?

這是我到目前爲止嘗試過的。先設置mainWindow然後立即設置子窗口的邏輯是我仍然希望子窗口具有焦點,但我想mainWindow要高於任何其他正在運行的程序(即-Excel,VS等)。

private void Window_GotFocus(object sender, RoutedEventArgs e) 
    { 
     var mainWindow = Application.Current.Windows.Cast<Window>().FirstOrDefault(window => window is MainWindow) as MainWindow; 

     mainWindow.Topmost = true; 
     this.Topmost = true; 

    } 
+0

嘗試激活()在窗口 –

+0

剛剛嘗試過,根本沒有改變。 –

回答

2

我覺得你正在傾聽錯誤的事件,當你的窗口被選中時被通知。在您的子窗口上訂閱Activated事件,該事件應該讓您知道您的窗口在任務欄中被選中的時間。從那裏你可以激活()你的MainWindow。

此外,我認爲如果您設置父窗口爲子窗口的所有者,您將自動獲得此行爲。

+2

我甚至不知道'Activated',但將'MainWindow'設置爲所有者是完全正確的。我知道這是可能的,只是不能放置術語。謝謝你讓我的大腦開始跳躍。 :) –