如何使用c#??
将Messagebox.show()保存在其他应用程序之上答案 0 :(得分:65)
我尝试了donutboy提供的解决方案,它似乎不接受0x40000(或40000)作为MessageBoxOptions Enum值的有效选项。
但是我发现使用MessageBoxOptions.DefaultDesktopOnly具有相同的效果,并将MessageBox保持在最顶层,直到用户确认。 即。
MessageBox.Show("Hello there", "Prompt", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
这可能是最简单的原生解决方案。
答案 1 :(得分:25)
有一个更好的解决方案,无需创建新表单。
MessageBox.Show("Message Text", "Header", MessageBoxButtons.OK, MessageBoxIcon.None,
MessageBoxDefaultButton.Button1, (MessageBoxOptions)0x40000); // MB_TOPMOST
0x40000是“MB_TOPMOST”-Flag。
答案 2 :(得分:10)
另一种处理此问题的简单方法:
MessageBox.Show(new Form { TopMost = true }, "This is TopMost", "TopMost", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
答案 3 :(得分:0)
使用“new Form { TopMost = true }”作为第一个参数的问题是它在完成后无法正确处理新表单。
花了很多功夫才找到这个问题(几个星期)。唯一的症状是该程序将在半小时后“无法响应”。完全锁定,必须使用附加的调试器或任务管理器将其杀死,没有可用的调试信息。
要解决这个问题,你需要这样的东西:
using (Form form = new Form {TopMost = true})
{
var retval = MessageBox.Show(form, text, caption, ok, error);
form.Dispose();
return retval;
}
更好的是,编写您自己的“MyMessageBox”类,并使用它:
公共静态类 MyMessageBox {
public static DialogResult Show(string text, string caption, MessageBoxButtons ok, MessageBoxIcon error)
{
using (Form form = new Form {TopMost = true})
{
var retval = MessageBox.Show(form, text, caption, ok, error);
form.Dispose();
return retval;
}
// return UseForm ? MessageBox.Show(form, text, caption, ok, error) : MessageBox.Show(text, caption, ok, error);
}
public static DialogResult Show(string text, string caption, MessageBoxButtons ok)
{
using (Form form = new Form { TopMost = true })
{
var retval = MessageBox.Show(form, text, caption, ok);
form.Dispose();
return retval;
}
}
public static DialogResult Show( string text, string caption)
{
using (Form form = new Form { TopMost = true })
{
var retval = MessageBox.Show(form, text, caption);
form.Dispose();
return retval;
}
}
public static DialogResult Show(string text)
{
using (Form form = new Form { TopMost = true })
{
var retval = MessageBox.Show(form, text);
form.Dispose();
return retval;
}
}
}
答案 4 :(得分:0)
使用选项
<块引用>MessageBoxOptions.DefaultDesktopOnly