2015-05-04 46 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