之前金士顿老哥给我写了一个自动关闭的代码,
但是我为了弹窗的时候不被messagebox不被主界面挡住,写了如下方法
public void ShowMessage(string msg)
{
this.Invoke(new MessageBoxShow(MessageBoxShow_F), new object[] { msg });
}
delegate void MessageBoxShow(string msg);
void MessageBoxShow_F(string msg)
{
MessageBox.Show(msg, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
这是他给我写的自动关闭代码,那要如何使用到ShowMessage这个方法呢?
Thread.Sleep(1000);
Form msg = new Form();
Task.Run(new Action(() =>
{
Thread.Sleep(2000);
Invoke(new Action(() =>
{
msg.Close();
}));
}));
//MessageBox.Show(msg, message);
//ShowMessage(model.message) 要如何实现这个呢?
人家的代码我就不评价了,就单独解决你本题
弹框不置顶,因为主窗体使用了TopMost = true
所以你想弹框也置顶,就给个置顶的own,比如如下代码
MessageBox.Show(new Form{TopMost = true}, "Test");
你上个问题我就推荐过了。
NuGet程序包:AutoClosingMessageBox也许可以帮助你。
示例如下:
// 默认一秒后关闭
AutoClosingMessageBox.Show("Hello, World!");
或者自定义参数,如下:
var result = AutoClosingMessageBox.Show(
text: "提示内容?",
caption: "操作提示",
timeout: 2500,
buttons: MessageBoxButtons.YesNo,
defaultResult: DialogResult.Yes);
if(result == DialogResult.Yes) {
// 确认
}
else {
// 取消
}