使登录表单消失

  • 本文关键字:消失 表单 登录 c#
  • 更新时间 :
  • 英文 :


我有一个运行的简单程序,但在此之前,我会弹出一个登录表单,验证信息是否正确。如果是的话,登录表单就会关闭,主表单就会启动。然而,当我在打开主表单后关闭登录表单时,它会关闭整个应用程序。

我的程序.cs刚刚运行了一个新的frmLogin。这就是我登录时发生的情况。

frmMain frm = new frmMain(UsernameTextBox.Text, PasswordTextBox.Text);
frm.Show();
this.Close();

我怎么能抑制这种情绪呢?感谢

您不应该将登录表单设置为主表单,因为它在应用程序运行的大部分时间内都不会处于活动状态,而且您有另一个表单,在逻辑上是应用程序的主表单。

转到program.cs文件,将您的主窗体设置为Application.Run中的窗体,使其真正成为应用程序的主窗体。在主窗体的Load事件Hide中,使用ShowDialog显示您的登录窗体。关闭登录窗体后,您可以继续加载主窗体。

我建议您使用Panel而不是新表单。将登录控件放在Panel上并首先显示。如果用户登录成功,那么只需使面板不可见或将其从表单中删除。然后使带有主表单控件的面板可见。

if(IsLoginSuccess)
{
    panel.Visible = false;
    mainFormControlsPanel.Visible = true;
}

此外,我相信它应该比你的方法更快。

希望能有所帮助。

我建议这样做:

static void Main(string[] args) {
        var formLogin = new FormLogin();
        formLogin.ShowDialog();
        Application.Run(new FormMain(formLogin.UserName, formLogin.Password));
}

你需要设置你的程序.cs,这样做更像:

DialogResult result = DialogResult.Cancel;
while (result != DialogResult.OK)
{
    using (LoginForm loginForm = new LoginForm())
    {
        result = loginForm.ShowDialog();
        if (result != DialogResult.OK) continue;
        if (!AuthenticateCredentialsSomehow.Authenticate(loginForm.Username, loginForm.Password))
        {
            MessageBox.Show("Login Failed!");
            result = DialogResult.Cancel;
            continue;
        }
        MainForm mainForm = new MainForm(loginForm.Username, loginForm.Password);
        Application.Run(mainForm);
    }
}

这样,当你完成登录表单时,它就会消失,一旦登录成功,应用程序就会在你的主表单上运行。

最新更新