2012-07-19 107 views
0

我試圖找出哪些表單以模塊方式阻塞父級。確定哪些表單在WinForms中以模態方式重疊父表單

我的環境有點複雜。我有一個AppToolBar(比如任務欄),它是應用程序的主要形式。所有由我自己的工具欄打開的窗體因此是

ShowInTaskbar = False 

因爲在我自己的工具欄中顯示。同樣,應用程序直接運行的所有窗體(通過AppToolBar)都存儲在列表中。讓我們假設我有Form1,Form2和Form3。 Form 1和Form直接由AppToolBar運行結束,Form3由Form1上創建,然後通過

Form3.ShowDialog(Form1) 

顯示在某一時刻,用戶最大限度地減少了我的整個應用程序,然後調用

Form1.Hide 
Form2.Hide 

我無法設置Form1的狀態最小化,因爲它顯示爲任務欄上方的最小化窗口,因爲它不顯示在任務欄中。現在Form1應該調用Form3.Hide。那麼我怎麼能發現,Form3從Form1的角度來阻止Form1呢?

乾杯。

+0

隱藏對話框將關閉它。您可以使用Application.OpenForms屬性找回表單,並查看誰擁有擁有Owner屬性的表單。 – 2012-07-19 17:43:00

+0

@HansPassant我不知道,隱藏將關閉它。謝謝。我必須儘量減少它,但那沒關係。 Application.OpenForms正是我正在尋找的。你想創建這個答案?然後我可以接受它作爲解決方案。 – 2012-07-19 18:29:00

回答

0

只是爲了讓這個問題被標記爲答案,漢斯沒有發佈他的解決方案,我會的。

你會通過調用

Application.OpenForms 

,這將給你回一切形式獲取所有打開的窗體。要找出Form1的表單塊,您只需在所有打開的表單中搜索所有者屬性,並返回所有者爲Form1的表單。

相關問題