0

我正在创建一个登录功能。验证密码后,将调用主窗体。这是部分代码:

登录.cs

private void btnLogin_Click(object sender, EventArgs e)
{
    //Interaction with Database
    Main.Show();
    this.Close();
}

正如我预期的那样,只有登录表单将被关闭,主表单将保持不变。

但是,在执行最后一个命令后,它们都将关闭。

请问我该如何解决这个问题?

4

4 回答 4

3

在你的 program.cs 中放入Application.Run(main);

然后在main.load事件中使用显示对话框打开您的登录表单。

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Main());
}

和主要

public Main()
{
    InitializeComponent();
    Login p = new Login();
    DialogResult dr = p.ShowDialog();
    if (dr == DialogResult.OK)
    {
        //...
    }
    else
        Application.Exit();
}
于 2013-06-11T13:37:05.860 回答
0

如果您关闭主表单,应用程序将终止。您可以使用以下命令隐藏主表单,而不是关闭:

this.Hide();
于 2013-06-11T13:36:04.477 回答
0
private void btnLogin_Click(object sender, EventArgs e)
{
    // hide main form
    this.Hide();

    // show other form
    Form2 form2 = new Form2();
    form2.Show();

    // close application
    this.Close();
}
于 2013-06-11T13:37:14.427 回答
0

如果您打开 Program.cs 文件,您将看到类似以下的命令:

    Application.Run(new PasswordForm());

此命令中指定的形式是程序存在的原因,当此形式关闭时,STA 线程继续执行,然后完成,关闭整个应用程序。

要解决此问题,请创建密码表单的实例并在 Program.cs 文件中执行所有操作,然后在主 UI 表单上调用 Application.Run。

于 2013-06-11T13:38:19.557 回答