c#中的非自动阻塞MessageBoxes

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

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

然后,您将显示以下表格:

 // C# //Display frmAbout as a modeless dialog Form f= new Form(); f.Show(); 
 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() 。 这只是一个简单的示例,您可以添加按钮或图标所有者或您想要的其他参数。

可能最简单的是:

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

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

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