1. 程式人生 > 實用技巧 >登入窗體為主執行緒窗體時實現重登入的一個困難

登入窗體為主執行緒窗體時實現重登入的一個困難

一、在主介面窗體中呼叫已經隱藏的主執行緒登入窗體,輸入使用者名稱與密碼時如果正確,雖然程式碼中寫的是再次隱藏

登入窗體,但主執行緒仍會關閉,debug時可跟蹤到呼叫了dipose方法關閉登入窗體;

二、如點取消按鈕,登入窗體也會關閉,debug時可跟蹤到呼叫了dipose方法關閉登入窗體。

 if (new UserService().loginCheckWithSqlparameters(txt_userID.Text, pwd))
                    {
                        CurrentUser.userID = txt_userID.Text;
                        
//AuthorizationEventArgs a = new AuthorizationEventArgs(); //a.userAndPwdRight = true; //onAuthorizPass(a); DialogResult = DialogResult.OK; //if (loginSuccessFlag==true) //{
//} //Frm_main f = new Frm_main(); //f.Show(); //loginSuccessFlag = true; //登入成功後隱藏登入窗體 //this.Hide(); ////主窗體關閉後登入窗體也關閉 //f.FormClosed += closeLoginForm;
////主窗體點選重登入時,調出登入窗體 //f.重登入ToolStripMenuItem.Click += 重登入ToolStripMenuItem_Click; }

三、如何實現二次登入

如果不把登入窗體做為主執行緒窗體,那麼要實現重登入,只能開啟一個新程序,然後關閉本次程序,具體如何實現,待定。

   [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Frm_login frm_Login = new Frm_login();

            frm_Login.ShowDialog();
            if (frm_Login.DialogResult == DialogResult.OK)
            {
                Application.Run(new Frm_main());
            }
            else
            {
                Application.Exit();
            }


        }