天天看點

彈出MessageBox并延遲一段時間後自動關閉的一種方法

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

    }