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();