我需要实现一个在20秒后自动关闭的非阻塞MessageBox
。有人可以建议我怎么做这个吗?
答案 0 :(得分:9)
您使用DispatcherTimer创建一个新窗口。窗口打开时,启动计时器。那你有两个选择:
答案 1 :(得分:6)
当你说非阻塞时我会立即排除MessageBox类(假设非阻塞你是指一个非模态对话框?)。
您可以改为创建一个Window,它是您自己的MessageBox实现。要使其成为非模态,请调用Show()方法。然后你可以设置一个20秒的计时器来调用close方法:
DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
//Constructor
public MyMessageBox()
{
timer.Interval = TimeSpan.FromSeconds(20d);
timer.Tick += new EventHandler(timer_Tick);
}
public new void Show()
{
base.Show();
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
//set default result if necessary
timer.Stop();
this.Close();
}
//Constructor
public MyMessageBox()
{
timer.Interval = TimeSpan.FromSeconds(20d);
timer.Tick += new EventHandler(timer_Tick);
}
public new void Show()
{
base.Show();
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
//set default result if necessary
timer.Stop();
this.Close();
}
以上假设您已经创建了一个名为MyMessageBox的类,该类继承自Window。