欢迎大家来到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();
}
}
欢迎大家来到IT世界,在知识的湖畔探索吧!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/49341.html