MainForm關閉之後保持程序運行

MainForm關閉之後保持程序運行

作者:羅會濤

WinForm程序一般都是從一個Form的static void Main()開始運行,暫且稱此Form爲MainForm。Main函數的一般寫法是:

static void Main()
{
  Application.Run(new Form1());
}

這樣的寫法有一個問題:如果需要從Form1中調出另一個Form,必須保持Form1不能關閉,比如在一個Button的Click中調出Form2:

private void button1_Click(object sender, System.EventArgs e)
{
  (new Form2()).Show();
}

可以看到兩個Form同時顯示在屏幕上,如果改成:

private void button1_Click(object sender, System.EventArgs e)
{
  (new Form2()).Show();
  this.Close();
}

那麼執行到this.Close()時,整個應用程序將終止運行,Form2也會自動關閉。

如果需要僅僅顯示Form2,除了將Form1.Close改爲Form1.Hide之外,還有一種辦法,就是將Main改爲:

static void Main()
{
  (new Form1()).Show();
  Application.Run(); // 啓動獨立的應用程序線程
}

這樣Form1中的this.Close()就不會導致應用程序終止運行了,而且不需要Form1時,可以真正Close從而釋放一些資源。不過,應用程序的終止就不要在其他地方控制了,比如在Form2的Closed事件中:

private void Form2_Closed(object sender, System.EventArgs e)
{
  Application.Exit();
}

在多文檔應用程序中,往往需要在內部維護一個當前活動Form的列表,最後一個Form關閉時,再調用Application.Exit。


關於作者:
羅會濤是GrapeCity公司的技術總監。曾與他人合作著有《精通MS SQL Server 7.0》和《會計電算化實用技術》等書,在《計算機世界報》發表文章數篇。並曾在兩屆微軟DevDays技術大會上授課。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章