在间隔过去后,对MessageBox执行默认操作

时间:2011-03-08 10:41:01

标签: c# .net wpf winforms c#-4.0

假设我有一个自定义消息框,如下所示

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.
    };

3 个答案:

答案 0 :(得分:3)

如果您使用的是WPF,则可以在自定义消息框上使用DispatcherTimer(System.Windows.Threading)。只需使用Tick事件调用Close()。

答案 1 :(得分:1)

过去我必须做类似的事情。我所做的是初始化一个定期打勾的System.Threading.Timer。如果我可以关闭窗口(因为某些后台操作已经完成),我会在每个tick上设置DialogResult并调用Close(确保检查InvokeRequired)。

答案 2 :(得分:1)

一秒钟对我来说听起来太短了,但无论如何。

只需将Timer控件添加到自定义消息框表单中,启用它并将其Intervall设置为1000.然后为其添加事件的计时器事件并将调用发送到{ {1}}里面。