2010-11-22 59 views

回答

11

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

然后,您将显示该表如下:

// C# 
//Display frmAbout as a modeless dialog 
Form f= new Form(); 
f.Show(); 
+0

我可以传递给.Show一个字符串,所以我可以用一个快速的“发现并取代“(我有很多messageBoxes)? – Alex 2010-11-22 12:08:51

+0

在Form类中,添加一个字符串成员并通过构造函数进行设置。并且在FormLoad上,将该字符串显示为静态文本。 – Aamir 2010-11-22 12:13:56

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