登入窗體為主執行緒窗體時實現重登入的一個困難
阿新 • • 發佈:2020-11-15
一、在主介面窗體中呼叫已經隱藏的主執行緒登入窗體,輸入使用者名稱與密碼時如果正確,雖然程式碼中寫的是再次隱藏
登入窗體,但主執行緒仍會關閉,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(); } }