2017-07-19 84 views
0

這可能是一個愚蠢的問題,但我一直在四處尋找,但沒有找到相關的參考我的情況。MessageBox.Show()「凍結」的WinForms應用程序,除非按下Alt

我有一個C#winforms應用程序,由多個表單組成。
當一個特定的表單打開(我們稱之爲表單A),另一個表單嘗試顯示一個messageBox時,應用程序似乎凍結。
如果我按下鍵盤上的ALT鍵,情況就會解決,在這種情況下,messageBox出現,我可以繼續。

這正常工作與其他形式的,所以我收集的問題是具體的形成,但是,我對如何處理這個非常小的想法。
表單屬性與其他表單沒有任何區別,我們使用VS中的設計器界面創建表單。

我很欣賞任何類型的方向或幫助。

+2

如果其特定的形成我們需要的代碼,瞭解哪裏的問題可能是。因爲不得不按ALT來顯示對我來說是新的 – EpicKip

+0

大多數情況下,您可能不會使用接受所有者窗口的處理程序並且操作系統錯誤地顯示消息的'Show'的重載版本,它位於當前活動的窗口。嘗試將明確的值傳遞給第一個參數,即'IWin32Window所有者'並返回結果。我會張貼這個作爲答案,但機會是你再次遇到另一個問題,與這個常見問題無關。 –

+0

WiktorZychla-我試圖添加所有者,問題仍然複製。 重要的是要注意,同樣的問題不會複製與其他形式,只是特定的形式A,所以我懷疑問題是與消息框。 @EpicKip - 我很樂意分享這些代碼,如果您可以指示我使用任何可能與此問題相關的代碼。 'form A'類很長,並且充滿了恐懼;) –

回答

0

請解釋一下其中的問題是在我使用的Windows窗體,我一直一直執行的線程或BackgroundWorker的重過程。

+0

我有一個表格(A)顯示 - 通過主窗體激活。 當窗體A打開時,我繼續在主窗體上工作,執行一個導致messageBox.show()命令的操作。 到達那個點時,messageBox沒有出現,應用程序似乎被凍結。 當我點擊ALT鍵時,這個問題得到解決,此時消息框顯示爲正常。 幾個其它註釋: 1)這不與其它形式的除形成甲 2)形式的發生經由form.show激活(),所以我可以與兩個在同一時間工作。 –

0

好的,問題解決了! 這是如何: 在窗體A上,我有一個datagridview。作爲上一個問題的解決方案,我有一個爲該對象而痛苦的函數。 該函數正在調用同一對象的刷新 - 這裏存在問題 - 一個無限循環,劫持我的應用程序並有效地隱藏messageBox。

當然,這是我的一個新手的錯誤和的「我沒有注意到」不好的情況下。 希望這可以幫助別人的未來:)