我在我的应用上有一个登录表单。一旦提供了正确的用户名和密码,我希望关闭登录表单并打开我的主表单。我在执行此操作时遇到了麻烦,因此我使用快速修复并对其进行编码,以便成功登录意味着登录表单的Visible属性设置为false(使其看起来像是对用户关闭)。但我对这个解决方案不满意,因为这意味着登录表格始终是开放的。
我在frmLogIn上的代码是
Form fM = new frmMain();
this.Visible = false;
fM.Show();
如何改变这一点,以便frmLogIn在frmMain打开时实际关闭?
PS。我也在这些论坛上的另一个帖子中尝试过这个代码,但这也不起作用。
Form fM = new frmMain();
fM.Location = this.Location;
fM.StartPosition = FormStartPosition.Manual;
fM.FormClosing += delegate { this.Show(); };
fM.Show();
this.Hide();
答案 0 :(得分:3)
我建议用另一种方式做: 在您的MainForms - Loaded事件show(modal)中,登录对话框以及用户未登录对此做出反应。
例如:
void FormLoad(...)
{
var dlg = new LoginDialog();
dlg.ShowDialog();
if (!dlg.UserLogedIn)
{
// react ....
this.Close();
}
}
答案 1 :(得分:1)
所以说你在主要的应用程序表单中加载事件。在这里,您可以启动登录屏幕
LoginForm logForm = new LoginForm();
logForm.ShowDialog();
然后你可能会得到登录是否从相关logForm
的访问者传递,所以在logForm
的Closing事件中
this.passedLogin = true;
this.Close();
然后返回上面ShowDialog()
之后的主要表单Load事件,您可以检查登录是否通过,如果它没有关闭应用程序或强制重新尝试
if (!logForm.passedLogin)
this.Close();
我希望这会有所帮助。