2015-05-04 48 views
2

我有一個帶有兩個按鈕和文本的消息框。 這是相關代碼:MessageBox自動繼續而不按下按鈕

var result = MessageBox.Show("just a text","just a title",MessageBoxButtons.OKCancel,System.Windows.Forms.MessageBoxIcon.Warning,System.Windows.Forms.MessageBoxDefaultButton.Button1, System.Windows.Forms.MessageBoxOptions.ServiceNotification | System.Windows.Forms.MessageBoxOptions.RightAlign); 
if (result == DialogResult.OK) 
{ 
    ... code ... 
} 

我的問題是程序進入裏面的「如果」自動的代碼,並彈出消息框,甚至不露面。 即使當我調試它時,我看到代碼進入「if」行,結果是DialogResult.OK。

我正在使用web窗體和ASP.Net。

MessageBox的命名空間是「System.Windows.Forms」。

我試着清除緩存,甚至iisreset。

還有什麼可以幫助我嗎?

預先感謝您。

+1

你從ASP.NET調用'MessageBox.Show()'嗎? – CodeCaster

+1

這是Web應用程序嗎?您需要使用客戶端腳本顯示消息框。不是服務器端代碼。你的'MessageBox'的命名空間是什麼? –

回答

7

我正在使用web窗體和ASP.Net。

MessageBox的命名空間是「System.Windows.Forms」。

不這樣做。一個ASP.NET站點運行在服務器上,所以沒有人可以點擊MessageBox,如果它甚至會在服務器上彈出。

如果您想向用戶顯示彈出窗口,則必須使用Javascript。請參閱How to make a simple yes/no popup in ASP.NET that return the result back to my c#?

+0

那麼你建議我做什麼?我無法在客戶端運行該腳本,因爲它是作爲按鈕從網格中的列中激活的。 –

+0

你當然可以。與'RegisterClientScriptBlock'的東西,嘗試搜索。 – CodeCaster

0

這裏有兩個問題。 在代碼邏輯中,MessageBox 顯示方法與主線程併發。所以當運行立即顯示方法的代碼運行後,主線程不會等待答案! 如果您想成爲主線程等待關閉消息,則應使用MessageBox的功能ShowDialog。 (MSDN Reference

但現在你正在工作在ASP中,這與Windows有很大不同,正如我們親愛的朋友CodeCaster也表示,ASP服務器端不是客戶端!因此,您的信息將顯示在服務器系統上,而不是正在觀看您的網站的用戶系統上!

+1

'MessageBox.Show()'是模態的。 :)它在鏈接的第二段說明:_「顯示重要消息的對話框應始終爲模態,Visual Studio中的」關於「對話框是模態對話框的示例,」MessageBox「是一種模態形式可以使用「_和[MessageBox Class](https://msdn.microsoft.com/en-US/library/system.windows.forms.messagebox(v = vs.110).aspx):_」Displays一個消息窗口,也稱爲對話框,向用戶顯示一條消息,它是一個模態窗口,阻止應用程序中的其他操作,直到用戶關閉它爲止。 – CodeCaster