從網上看到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;
}