2010-04-20 133 views
2

我遇到,我嘗試在方法運行一個簡單的代碼行Form.ShowDialog()不顯示形式

昏暗的資源作爲的DialogResult = frmOptions.ShowDialog()

的情況但沒有任何反應。該對話框不會出現。如果我從代碼中的另一個位置運行此方法,它將執行正常(即以對話框模式顯示錶單,之後代碼也會正常執行)。因此,這可能是我到達這個代碼的方式導致我的問題,但我看不出發生了什麼問題。

當我暫停調試器時,代碼行以綠色突出顯示,但我看不到它或進入它。

任何想法可能會導致這種情況發生,或者我應該尋找可能導致問題?

感謝您的幫助!

+0

其他相關代碼的外觀如何? – 2010-04-20 04:13:52

+1

[打電話給doc]嗨doc,我感覺不好。我怎麼了? ;-)上下文,clawson,上下文.... – 2010-04-20 04:17:25

回答

5

問題是活動窗口默認設置爲對話框的所有者,它的TopMost屬性設置爲true。結果對話框顯示在所有者(TopMost)窗口後面。

該對話框是一種模式窗體,因爲這樣的其他窗口無法給予焦點,因此程序顯示爲沒有任何事情正在發生或正在工作,而實際上對話框僅隱藏在最頂層窗體的後面。

代碼在其他場合下工作的原因是因爲活動窗口在加載對話框時沒有將其TopMost屬性設置爲true,因此按預期顯示對話框。

+1

編輯此答案,以便它對問題中提出的問題提出明確而明顯的解決方案,然後接受它。你可能會得到一些upvotes。 – 2010-04-20 05:10:21

-1
Dim frmOptions As New YourFormClass() 
    Dim res As DialogResult = frmOptions.ShowDialog(me)