2017-04-13 101 views
0

所有編碼器在那裏, 在標記此副本之前,直到最後一行爲止。如何阻止對話窗口隱藏在其他窗口的後面 - 主窗口,登錄窗口和對話框

我得到的問題隱藏在主應用程序窗口下的對話框。 我已經檢查了所有的參數,即最高層和所有者,使對話框出現。 最後,我發現我的問題在業主內部,因爲業主是錯誤的。

這裏是我的僞:

  • 當有人點擊exe文件,打開登錄窗口(我有一個不同的項目, login.dll)
  • 後登錄成功後,啓動主窗口(此是我的實際 主窗口,mainwindow.dll)
  • 現在推出主窗口之後,某個地方,我啓動彈出(第三 窗口 - 這是單獨的錯誤處理項目,errorhandler.dll)

問題: 錯誤彈出窗口不會出現並在其他窗口後隱藏。

我的代碼:

    if (popupWindow.Owner == null) && popupWindow != System.Windows.Application.Current.MainWindow) 
       { 
        popupWindow.Owner = System.Windows.Application.Current.MainWindow; 
       } 

我發現了什麼: 當我調試的代碼,我所觀察到的 - 登錄窗口變得current.Mainwindow,因爲它是首次推出。登錄後我只隱藏窗口而不關閉它。現在,成功登錄後,我啓動主窗口(這是活動窗口,不是實際的主窗口:),令人困惑)

此後,當出現彈出窗口時,上面提到的代碼正在執行,奇怪的是System.Windows.Application。 Current.MainWindow 保存登錄窗口的值並將所有者設置爲登錄窗口,從而使彈出窗口隱藏在其他窗口的後面。

  • 我不能關閉登錄窗口後直接登錄成功,因爲它 因爲我的主窗口取2-3 分鐘加載(巨大的東西加載) 如何設置主會終止應用程序窗口爲System.Windows.Application.Current.MainWindow,因爲一旦主窗口加載完成,popup就會在下一秒開始出現。

如何從System.Windows.Application.Current.Windows列表中刪除登錄窗口?

有沒有什麼快捷方法可以讓我們在System.Windows.Application.Current.MainWindow上設置活動窗口,並且每次都會引用它?

+0

爲什麼不首先啓動主窗口,t母雞登錄窗口showdialog? –

+0

其實,我的主窗口需要2-3分鐘的加載。因此,爲了改善用戶體驗,我首先登錄,如果成功,然後讓用戶等待,如果失敗,他們可以在幾秒鐘內關閉它並重新啓動。 –

+1

爲什麼不在主窗口中使用多線程 –

回答

0
  • 當有人點擊exe文件,打開登錄窗口(我有一個不同的項目,登錄。DLL)
  • 後登錄成功後,啓動主窗口(這是我的實際主窗口,mainwindow.dll)
Application.Current.MainWindow = MyNewMainWindow; 
  • 現在的地方發射的主窗口後,我啓動彈出(第三個窗口 - 這是單獨的錯誤處理項目,errorhandler.dll)
+0

我知道這是我要做的事情(因爲這是非常簡單的做法),但是說過我在3個窗口打開後我所處的位置。線程無法幫助。我期待一些邏輯,我可以把你的線。 :)謝謝堆! –