2015-01-14 29 views
2

我需要通過在下雨時打開一個彈出窗口來警告用戶,並通過按下一個按鈕來確認他知道天氣狀況,從而得到他\她的反饋。但我希望我的代碼的其他行在後臺運行。換句話說,我正在尋找一種解決方案,它不會導致程序停止,直到用戶按下按鈕。我使用Visual Studio 2013 WinForms。感謝大家。如何打開一個彈出窗口來警告用戶並在後臺運行?

+2

的WinForms? WPF? ASP.NET? – dymanoid

+0

親愛的dymanoid,Visual Studio 2013 WinForms – GntS

+1

你可以調用'YourWindow.Show()'而不是'YourWindow.ShowDialog()'來顯示你的彈出窗口。這會將您的窗口顯示爲非模態,並且您的代碼將繼續執行。 – dymanoid

回答

1

我不知道您的具體要求是什麼,但是

Messagebox.show顯示,被稱爲「模式」的意思是,雖然它是開放的,你不能與其他窗口互動messagebkx。要使用非模態消息框,請嘗試創建一個新窗體並使用messagebox.show來顯示它。 您必須創建一個表單並使用Show()來顯示。

請注意,messagebox.show只要messagebox已關閉,就會得到結果,非模態消息框不會執行此操作,您需要編寫一些代碼來處理事件。

如果不是活動,您可能正在尋找的是asyncawait

Asyncawait是兩個C#的關鍵字,更多信息可以在Microsoft文檔在這裏找到:http://msdn.microsoft.com/en-us/library/hh191443.aspx

如果你把一個async方法稱爲showDialogAsync()等待着用戶的結果,然後等待它放在一個新的線程,你將得到以下結果:

您的程序正常運行 符合條件且需要顯示對話框 showDialogAsync被調用並等待。 Showdialogasync等待用戶輸入。 控件返回調用方法showDialogAsync 當用戶單擊按鈕時,調用方法的await後的代碼將運行。

該圖示出了在一些async代碼控制流和可能有幫助: http://i.msdn.microsoft.com/dynimg/IC612215.png

+0

就我所知,問題是如何顯示非模態彈出窗口。這與異步/等待或多線程無關。 – dymanoid

相關問題