在.net的WinForm程序中,如果是直接起動的Form作為主窗口,那么這個主窗口是不能關閉的,因為它維護了一個Windows消息循環,
它一旦關閉了就等於聲明整個應用程序結束,所以新打開的窗口也就被自動關閉了。因此要關閉的窗口不能用Application.Run創建。
如何使用Hide()(只是隱藏,其實進程還被占用着)之類或者Close()(這個操作會把所有窗體關閉,因為屬於同一個線程)是達不到我們需要的效果的。
要在關閉一個窗口的同時打開另一個窗口,可以按如下做法:
先在第一個窗口聲明一個公共的bool變量並賦值為true:
如public bool closeflag = true;
在program類里運行第二個窗口,主要代碼:
Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 form1 = new Form1(); form1.ShowDialog(); //模式窗口,先運行Form1的作用 if (from1.closeflag == false) { Application.Run(new Form2()); }
然后在Form1的關閉的相關控件(如按鈕或什么的,就是要關閉這個窗口的控件) 將closeflag賦值為false,並調用this.close();關閉第一個窗口。