从网上看到MessageBox会导致阻塞,要想延时后自动关闭只能发送Enter或者向指定窗口发送关闭消息。这些方法都比较麻烦,有一种更为简便的方法,思路是:在Form1里生成一个新的窗口Form2,Form2窗口不显示,使用MessageBox.Show()指定所有者是Form2,Form1的定时器延时一段时间后关闭Form2,这样一来关闭Form2的同时,MessageBox也被关闭了。
需要注意的是,Form2应该是Form1类的一个成员,这样定时器里才能调用Form2.close()用以关闭Form2代码如下:
Form1里有个按钮,Form2是一个空窗体。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
Form2 = new Form2();
MessageBox.Show(Form2, "abcdefg", "test");
}
private void timer1_Tick(object sender, EventArgs e)
{
Form2.Close();
}
Form2 Form2;
}