我正在创建一个登录功能。验证密码后,将调用主表单。 这是部分代码:
Login.cs
private void btnLogin_Click(object sender, EventArgs e)
{
//Interaction with Database
Main.Show();
this.Close();
}
我预计只会关闭登录表单,主表单将保持不变。
但是,在执行完最后一个命令后,它们都会关闭。
我该如何解决这个问题?
答案 0 :(得分:3)
在你的program.cs中放入Application.Run(main);
然后在main.load
事件中使用show dialog打开您的登录表单。
[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();
}
答案 1 :(得分:0)
如果您关闭主表单,应用程序将终止。您可以使用以下命令隐藏主窗体,而不是关闭:
this.Hide();
答案 2 :(得分: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();
}
答案 3 :(得分:0)
如果打开Program.cs文件,您将看到与此类似的命令:
Application.Run(new PasswordForm());
此命令中指定的表单是程序存在的关系,当此表单关闭时,STA线程继续执行,然后结束,关闭整个应用程序。
要解决此问题,请在主UI表单上调用Application.Run之前,创建一个密码表单实例并在Program.cs文件中执行所有操作。