任何人都知道.NET中的messageBox,它不会阻塞创建它的线程直到它关闭?c中的非自动阻塞消息框#
10
A
回答
11
通过System.Windows.Forms
命名空间使用的默认MessageBox
将始终为模态(即,阻止)。如果你想有一个Modeless消息框,你应该创建自己的WindowsForm
,看起来像一个MessageBox
。
然后,您将显示该表如下:
// C#
//Display frmAbout as a modeless dialog
Form f= new Form();
f.Show();
18
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()
用你的文字和标题。这只是一个简单的示例,您可以添加按钮或图标的所有者或您想要的其他参数。
8
也许最简单的是:
Thread t = new Thread(() => MessageBox.Show(text));
t.Start();
3
您可以简化这些其他的答案下来的一行代码
new Thread(() => System.Windows.Forms.MessageBox.Show(text)).Start();
我可以传递给.Show一个字符串,所以我可以用一个快速的“发现并取代“(我有很多messageBoxes)? – Alex 2010-11-22 12:08:51
在Form类中,添加一个字符串成员并通过构造函数进行设置。并且在FormLoad上,将该字符串显示为静态文本。 – Aamir 2010-11-22 12:13:56