作者:羅會濤 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(); }
還有一種辦法就是: 主窗體:FormMain 登陸窗體:FormLogin 在FormMain中調用FormLogin,登陸完成后,關閉FormLogin。 就不會涉及到上面的問題了。 俺就是這么用的:)
|