在表格之间切换

时间:2012-03-26 07:53:25

标签: c# winforms

我在我的应用上有一个登录表单。一旦提供了正确的用户名和密码,我希望关闭登录表单并打开我的主表单。我在执行此操作时遇到了麻烦,因此我使用快速修复并对其进行编码,以便成功登录意味着登录表单的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(); 

2 个答案:

答案 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();

我希望这会有所帮助。