假设我有一个自定义消息框,如下所示
MyWindow.ShowDialog();
如果没有用户操作,我需要Close()
,Hide()
或者在说1秒后执行一个处理程序说Close_Click
。
Thread.Sleep()
和Timer
方法没有多大帮助。
修改
我是在窗口构造函数
中完成的 var timer = new System.Timers.Timer(timeOut);
timer.Start();
timer.Elapsed += (sender, e) =>
{
cmdClose_Click(null, null); //Attached to a button which normally does the job of closing the window.
};
答案 0 :(得分:3)
如果您使用的是WPF,则可以在自定义消息框上使用DispatcherTimer(System.Windows.Threading)。只需使用Tick事件调用Close()。
答案 1 :(得分:1)
过去我必须做类似的事情。我所做的是初始化一个定期打勾的System.Threading.Timer。如果我可以关闭窗口(因为某些后台操作已经完成),我会在每个tick上设置DialogResult并调用Close(确保检查InvokeRequired)。
答案 2 :(得分:1)
一秒钟对我来说听起来太短了,但无论如何。
只需将Timer
控件添加到自定义消息框表单中,启用它并将其Intervall
设置为1000.然后为其添加事件的计时器事件并将调用发送到{ {1}}里面。