c#中的非自动阻塞MessageBoxes

时间:2010-11-22 11:55:29

标签: c# .net winforms

任何人都知道.NET中的messageBox不会阻止创建它的线程直到它关闭?

4 个答案:

答案 0 :(得分:20)

private void ShowMessageBox(string text, string caption)
{
    Thread t = new Thread(() => MyMessageBox(text, caption));
    t.Start();
}

private void MyMessageBox(object text, object caption)
{
    MessageBox.Show((string)text, (string)caption);
}

您可以使用文字和标题来致电ShowMessageBox()。这只是一个简单的示例,您可以添加按钮或图标所有者或您想要的其他参数。

答案 1 :(得分:11)

您通过MessageBox命名空间使用的默认System.Windows.Forms将始终为模态(即阻止)。如果您想要一个无模式消息框,您应该创建一个看起来像WindowsForm的{​​{1}}。

然后,您将按如下方式显示此表格:

MessageBox

答案 2 :(得分:11)

最简单的可能是:

Thread t = new Thread(() => MessageBox.Show(text));
t.Start();

答案 3 :(得分:10)

您可以将这些其他答案简化为一行代码

new Thread(() => System.Windows.Forms.MessageBox.Show(text)).Start();