C#Winform关于自己写了一个messagebox方法要如何才能自动关闭呢?

之前金士顿老哥给我写了一个自动关闭的代码,
但是我为了弹窗的时候不被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 { 
    // 取消
}