登录窗体为主线程窗体时实现重登录的一个困难
Posted windy3417
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了登录窗体为主线程窗体时实现重登录的一个困难相关的知识,希望对你有一定的参考价值。
一、在主界面窗体中调用已经隐藏的主线程登录窗体,输入用户名与密码时如果正确,虽然代码中写的是再次隐藏
登录窗体,但主线程仍会关闭,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(); } }
以上是关于登录窗体为主线程窗体时实现重登录的一个困难的主要内容,如果未能解决你的问题,请参考以下文章