登录表单会消失吗?

时间:2013-08-12 14:17:47

标签: c#

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

我的program.cs只运行一个新的frmLogin。 这是我登录时发生的事情。

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

我该如何压制?感谢

4 个答案:

答案 0 :(得分:1)

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

转到program.cs文件并将主窗体设置为Application.Run中的窗体,这样它就是应用程序的主窗体。在您的主要表单的Load活动Hide内,并使用ShowDialog来显示您的登录表单。当您的登录表单关闭后,您可以继续加载主表单。

答案 1 :(得分:0)

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

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

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

希望它有所帮助。

答案 2 :(得分:0)

我会建议像:

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

答案 3 :(得分:0)

您需要设置program.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);
    }
}

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

相关问题