【问题标题】:MessageBox continues automatically without pressing on buttonMessageBox 自动继续,无需按下按钮
【发布时间】:2015-07-13 16:22:56
【问题描述】:

我有一个带有两个按钮和一个文本的消息框。 这是相关代码:

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”中输入代码,并且弹出消息框甚至没有出现。 即使我调试它,我也看到代码转到“if”行,结果是 DialogResult.OK。

我正在使用 Web 表单和 ASP.Net。

MessageBox 的命名空间是“System.Windows.Forms”。

我尝试清除缓存甚至 iisreset。

还有什么可以帮助我的?

提前谢谢你。

【问题讨论】:

  • 您是否从 ASP.NET 调用 MessageBox.Show()
  • 这是网络应用程序吗?您需要使用客户端脚本显示消息框。不是服务器端代码。 MessageBox 的命名空间是什么?

标签: c# messagebox dialogresult


【解决方案1】:

这里有两个问题。 在代码逻辑中,MessageBox Show 方法与主线程是并发的。所以当 Show 方法运行后立即执行代码,主线程不等待答案! 如果你想成为主线程等待关闭消息,你应该使用MessageBox的ShowDialog函数。 (MSDN Reference)

但是现在你在 ASP 中工作,这和 Windows 有很大的不同,正如我们亲爱的朋友CodeCaster 也说过,ASP 是服务器端而不是客户端!所以您的消息将显示在服务器系统上,而不是正在观看您网站的用户系统上!

【讨论】:

  • MessageBox.Show() 是模态的。 :) 它在链接的第二段中这样说:“显示重要消息的对话框应始终是模态的。Visual Studio 中的关于对话框是模态对话框的示例。MessageBox 是模态的可以使用的表单。”MessageBox Class:“显示消息窗口,也称为对话框,向用户呈现消息。它是一个模态窗口,阻止其他操作在应用程序中,直到用户关闭它”.
【解决方案2】:

我正在使用 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#?

【讨论】:

  • 那么你建议我做什么?我无法在客户端运行便便,因为它是从网格中的列内部作为按钮激活的。
  • 你当然可以。与RegisterClientScriptBlock 相关的内容,请尝试搜索。
猜你喜欢
  • 1970-01-01
  • 2014-03-01
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2018-10-28
相关资源
最近更新 更多