c#打開新窗體後關閉舊窗體

很多做winform的朋友在做登陸界面的時候總會遇到這個問題:

當用戶輸入正確,登陸的時候,new出一個想顯示的窗口,然後show這個新窗口對象,在將當前窗體this,close掉

這一切看起來貌似合理正常,可就是沒有顯示,原因我相信大家馬上就找到了,對就是父窗體都不在了(執行了close()方法了)

他裏面的所有對象(當然包括你剛剛new出來的新的想要顯示的登陸後的窗體了)都將不在了,此刻的應用程序就結束了

有沒有辦法呢?哈哈,當然有了,不然就不在這裏寫了,應該去microsoft的版塊兒寫了。

每個winform都有個program的類文件,這裏顯示了應用程序的入口Main函數,這裏就會從一開始new出,並run起來你的第一個窗體

因此我們的辦法就是在這裏下功夫:

原理:

program類中application.run是依次執行的,也就是說如果有兩句application.run()的話,另外一句要再這一句執行完返回以後纔會執行,

那麼,什麼時候算執行完呢,窗體關閉,run裏面參數所運行的窗體實例關閉的時候,就會返回了,所以我們有了辦法;

直接看代碼

  public  static  bool Login = false;//登陸成功後改爲true就好
        /// <summary>
        /// 應用程序的主入口點。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new FrmCJ());
            
            FrmLogin l = new FrmLogin();//登陸窗體
            Application.Run(l);//運行
            if (Login)
            {
                FrmCJ CJ = new FrmCJ();//主窗體
                Application.Run(CJ);//運行
            }
        }
    }


 

這樣就一目瞭然了吧,你只需要在你的登陸窗體成功的時候,將我們的Login變量賦值爲true,就順利達到目的的了,很簡單吧!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章