一、在主界面窗体中调用已经隐藏的主线程登录窗体,输入用户名与密码时如果正确,虽然代码中写的是再次隐藏
登录窗体,但主线程仍会关闭,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(); } }