我正在C#WPF .NET 3.5中開發應用程序。我有一個主窗口M,從中我打開一個未使用Window.Show()方法設置Owner屬性的非模態子窗口C1。從C1窗口創建另一個子窗口C2。從C2我創建另一個子窗口C3。 C2和C3都是無模式的,使用Window.Show()方法創建並且沒有設置Owner屬性。下面是Windows的序列:單擊父對話框時將無模式子對話框置於頂端
米 - > C1 - > C2 - > C3
我想如下的窗口行爲。如果點擊C1,並且C2打開,則C2被置於頂端。如果C2達到最高點,或者C2點擊,並且C3打開,則C3達到最高點。如果M被點擊,則M應該到達頂部。因此,C1,C2和C3的行爲將類似於模態窗口。不過,我不希望C1,C2和C3實際上是模態的,即我不想使用擁有Owner屬性集的Window.ShowDialog()方法創建它們。這是因爲我希望用戶能夠在需要時進入主窗口M.我如何實現這種行爲?
我事先感謝您的幫助。
geekowl
更新:
我加GotFocus事件處理程序中按建議的父窗口,但GotFocus事件不會被解僱。所以我添加了激活事件處理程序,並在此子窗口的名爲Activate()的處理程序中。這幾乎解決了這個問題,但在某些情況下,這種方法並不完美。例如,當孩子最小化並且父母被點擊時,孩子被激活,但孩子不會自動最大化。我試圖使用其他方法而不是使用Activate(),但他們都沒有給出完美的解決方案。最終,我使用該方法在顯示子窗口後隱藏父窗口,並在子關閉時再次顯示父窗口。
非常感謝。我可以使用哪個事件監聽器? – geekowl
更新了上述內容以包含我推薦使用的事件處理程序。 –
我已經更新了我的問題。感謝您提供建議。他們非常有幫助。他們幫助我找到了正確的解決方案。我非常感謝你的幫助。 – geekowl