大家好,欢迎来到IT知识分享网。
由于MessageBox.Show会阻断线程,如果长时间不关闭MessageBox对话框,某些情况下会导致程序异常退出,所以我们需要一个可以定时自动退出的MessageBox。
实现起来效果如何呢,请看图
实现起来其实很简单,通过自定义Form对象很容易实现窗口效果,定时关闭通过一个Timer来倒计时,时间到时通过设置form的DialogResult来结束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(); } }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/51292.html