2011-04-06 169 views
3

我有示出了在相同的消息環螺紋託管多個不同的頂層窗口的應用程序。這存在允許用戶打開相同數據的不同視圖。 (在MS Outlook中,您可以在另一個文件夾,右擊並選擇「在新窗口中打開」來獲得類似的行爲)。顯示模態對話框(MessageBox中)凍結其他窗口在應用

我遇到的問題是,當這些窗口之一打開模式對話框或消息框時,它會凍結父級的所有同級窗口。

當我打開一個模式對話框我想這隻能是模式相對於父/所有者窗口,而不是相對於應用程序中的其它頂級窗口模式的。有沒有合理的方法來做到這一點?我已經考慮:

  • 更換模態對話框與非模態對話框和禁用父窗口,當他們打開
  • 每個這些窗口

任何意見的應用程序中創建不同的線程?

+2

沒有很好地解決了這一點,據我所知。我很想聽到一個。 – SLaks 2011-04-06 15:24:22

+0

我認爲你最好的選擇是與(「替換模態對話框與非模態對話框,並禁用父窗口,當他們打開」),然後禁用父窗體,然後訂閱所有窗體的事件,如果表單關閉它檢查如果還有其他開放的表單(某種計數器可能?),然後如果沒有再次啓用主表單 – 2011-04-06 15:31:57

+0

這裏有相當多的討論:http://stackoverflow.com/questions/3494539/what-螺紋把手模態 - 對話框窗口,在網 – 2011-04-06 18:13:27

回答

4

這是「模式」的意思。你必須使它成爲非模態的,使用一個窗體並用Show()方法顯示它。要禁用部分UI,請將控件或窗體的Enabled屬性設置爲false。使用窗體的FormClosed事件將其設置爲true。請注意,這通常不會提高可用性。