我可以显示 MessageBox 但仍使用该表单吗?
Can I show a MessageBox but still use the form?
有可能当我使用:
MessageBox.Show("hello");
.. 仍然使用表单但 MessageBox 像第二个一样打开 window?
因为目前,当我显示 MessageBox 时,我需要先单击是或否,然后我才能再次使用我的表单。
没有。应用程序焦点将保留在消息框上,直到它被关闭。根据the documentation:
It is a modal window, blocking other actions in the application until the user closes it.
您可以做的是创建您自己的表单,将其设置为看起来像标准消息框的样式,然后使用实例上的 .Show()
功能显示该表单其中:
var messageBox = new MyCustomMessageBox("hello");
messageBox.Show();
如果您希望功能在使用上完全相同,您甚至可以在自定义表单中添加一个 static
方法来封装它:
public static void Show(string message)
{
new MyCustomMessageBox(message).Show();
}
虽然我不建议调用您的自定义表单 MessageBox
,但那样只会引起混淆。
是的,你可以!
如果您只想显示 MessageBox,不关心它会发生什么,也不想等到它关闭,您可以在单独的线程上启动它。最简单的方法是使用 Task.Run()
.
这是一个例子:
private void button1_Click(object sender, EventArgs e)
{
Task.Run(() => MessageBox.Show("hello"));
// The remaining code will run without waiting for the MessageBox to be closed.
}
有几点值得一提:
仅将此用于您不关心结果的简单消息框。如果您想根据结果采取行动并执行某些操作(在主线程上),事情会变得有点棘手。
您将无法将 MessageBox 保持在表单顶部。一旦你与表格互动,它就会出现在最上面。如果您需要将 MessageBox 保持在顶部并且仍然能够与表单交互,那么自定义 MessageBox(即表单)在这种情况下会更好,因为您可以设置 Owner
property 以将其保持在顶部。
有可能当我使用:
MessageBox.Show("hello");
.. 仍然使用表单但 MessageBox 像第二个一样打开 window? 因为目前,当我显示 MessageBox 时,我需要先单击是或否,然后我才能再次使用我的表单。
没有。应用程序焦点将保留在消息框上,直到它被关闭。根据the documentation:
It is a modal window, blocking other actions in the application until the user closes it.
您可以做的是创建您自己的表单,将其设置为看起来像标准消息框的样式,然后使用实例上的 .Show()
功能显示该表单其中:
var messageBox = new MyCustomMessageBox("hello");
messageBox.Show();
如果您希望功能在使用上完全相同,您甚至可以在自定义表单中添加一个 static
方法来封装它:
public static void Show(string message)
{
new MyCustomMessageBox(message).Show();
}
虽然我不建议调用您的自定义表单 MessageBox
,但那样只会引起混淆。
是的,你可以!
如果您只想显示 MessageBox,不关心它会发生什么,也不想等到它关闭,您可以在单独的线程上启动它。最简单的方法是使用 Task.Run()
.
这是一个例子:
private void button1_Click(object sender, EventArgs e)
{
Task.Run(() => MessageBox.Show("hello"));
// The remaining code will run without waiting for the MessageBox to be closed.
}
有几点值得一提:
仅将此用于您不关心结果的简单消息框。如果您想根据结果采取行动并执行某些操作(在主线程上),事情会变得有点棘手。
您将无法将 MessageBox 保持在表单顶部。一旦你与表格互动,它就会出现在最上面。如果您需要将 MessageBox 保持在顶部并且仍然能够与表单交互,那么自定义 MessageBox(即表单)在这种情况下会更好,因为您可以设置
Owner
property 以将其保持在顶部。