C# winform自定义可定时关闭的MessageBox

C# winform自定义可定时关闭的MessageBox由于MessageBox.Show会阻断线程,如果长时间不关闭MessageBox对话框,某些情况下会导致程序异常退出,所以我们需要一个可以定时

欢迎大家来到IT世界,在知识的湖畔探索吧!

由于MessageBox.Show会阻断线程,如果长时间不关闭MessageBox对话框,某些情况下会导致程序异常退出,所以我们需要一个可以定时自动退出的MessageBox。

实现起来效果如何呢,请看图

C# winform自定义可定时关闭的MessageBox

定时关闭的MessageBox

实现起来其实很简单,通过自定义Form对象很容易实现窗口效果,定时关闭通过一个Timer来倒计时,时间到时通过设置form的DialogResult来结束MessageBox对话框。

看代码吧

C# winform自定义可定时关闭的MessageBox

WInform定时关闭的MessageBox代码

惯例,献上可复制的代码

public static class MessageBoxHelper
    {
        public static DialogResult ShowWarning(string text, string caption)
        {
            var form = new Form()
            {
                Width = 640,
                Text = caption,
                ControlBox = false,
                FormBorderStyle = FormBorderStyle.FixedDialog,
                StartPosition = FormStartPosition.CenterScreen,
                ShowInTaskbar = false
            };

            Label contentView = new Label()
            {
                Padding = new Padding(20),
                Text = text,
                Dock = DockStyle.Fill,
                BackColor = Color.White,
                TextAlign=ContentAlignment.MiddleLeft
            };
            Panel panel = new Panel()
            {
                BackColor = ColorTranslator.FromHtml("#ccccc"),
                Height = 64,
                Dock = DockStyle.Bottom,

            };
            System.Timers.Timer timer = new System.Timers.Timer(1000);
            Button button = new Button()
            {
                Text = "OK",
                Height =48,
                Width=120,
                AutoSize=false
            };
            button.Top = 8;
            button.Left = 640 - button.Width-35;
            button.Click += (s, e) =>
            {
                timer.Stop();
                timer.Dispose();
                form.DialogResult = DialogResult.OK;
            };
            panel.Controls.Add(button);
            form.Controls.Add(contentView);
            form.Controls.Add(panel);
            
            int seconds = 5;
            timer.Elapsed+=(s, e) => {
                button.Invoke(() => {
                    if (seconds < 0)
                    {
                        button.PerformClick();
                    }
                    button.Text = #34;OK({seconds}s)";
                    seconds--;
                });
                

            };
            timer.Start();

            return form.ShowDialog();
        }
    }

欢迎大家来到IT世界,在知识的湖畔探索吧!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/49341.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信