2012-03-26 151 views
0

我的应用程序中有一个登录窗体。一旦提供了正确的用户名和密码,我想要登录窗体关闭,并打开我的主窗体。我遇到了麻烦,所以我使用了一个快速修复程序并对其进行了编码,以便成功登录意味着将窗体的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(); 
+1

你在寻找函数'Close()'吗?这将关闭你的表格。 (这也将调用FormClosing事件的关闭窗体,在那里你可以显示你的其他表格) – Default 2012-03-26 07:55:01

+1

你试过this.Close()? – daryal 2012-03-26 07:58:15

回答

1

所以说,你是在主要应用形成Load事件。在这里,你可能会启动您的登录屏幕

LoginForm logForm = new LoginForm(); 
logForm.ShowDialog(); 

那么你可能会得到是否从相关logForm的访问在logForm,所以收盘事件主要通过

this.passedLogin = true; 
this.Close(); 

然后再登录上述ShowDialog()后形成Load事件,你可以检查是否登录过,如果不关闭应用程序或强制重新尝试

if (!logForm.passedLogin) 
    this.Close(); 

我希望这可以帮助。

+2

不错的重复;) – Carsten 2012-03-26 08:18:02

+0

我没有读过其他答案,我明白你的意思。道歉。但我向你保证,这是伟大的思想家认为的一样。 – MoonKnight 2012-03-26 08:48:34

+1

np ...这就是为什么我把笑脸放在那里 – Carsten 2012-03-26 08:53:29

3

我会建议做做它的其他方式: 在你MainForms - Loaded事件显示(模式)按登录对话框,如果用户没有登录对此有何反应。

例如:

void FormLoad(...) 
{ 
    var dlg = new LoginDialog(); 
    dlg.ShowDialog(); 

    if (!dlg.UserLogedIn) 
    { 
     // react .... 
     this.Close(); 
    } 
}