我的项目中有两个Win表单,一个Login
表单和Main
表单。我有Login
形式的按钮,点击该按钮时应打开Main
表单并关闭当前(登录)表单。
我尝试过这种方法
private void button1_Click(object sender, EventArgs e)
{
Mainform frm = new Mainform();
frm.Show();
this.Hide();
}
但它只隐藏了当前的形式。因此,即使关闭主窗体后,我也必须通过按 Shift + F5手动停止调试。
然后我尝试了以下代码
private void button1_Click(object sender, EventArgs e)
{
Mainform frm = new Mainform();
frm.Show();
this.Close();
}
但是现在,当我单击按钮时,Mainform
打开并在一秒钟内关闭两个表单,程序停止调试。
如何从Mainform
表单正确打开Login
,我不必手动停止调试?
答案 0 :(得分:0)
你可以这样做
private void button1_Click(object sender, EventArgs e)
{
Mainform frm = new Mainform();
frm.Show();
this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;
}
在另一个地方,您可以再次显示登录表单
private void button1_Click(object sender, EventArgs e)
{
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
}
答案 1 :(得分:0)
您的问题是您在Form1中托管Form2。
看起来,您的应用程序从Form1开始,然后在其中加载Form2, 现在你关闭Form1并且期待Form2在你杀死它的主机时保持活力。
更好的方法是使用不同的表单或首选的静态类初始化您的应用程序,这将在您的应用程序生命周期中“持续”。
这就是为什么当你启动一个新的Windows窗体项目时,你的解决方案中添加了一个名为 Program.cs 的类。
答案 2 :(得分:0)
正如@ polisha989所说,如果你想在MainForm关闭时终止应用程序或者最终在那里重新打开Loginform,你可以在Program.cs中托管MainForm。
第二个optoin是将LoginForm的引用传递给MainForm并在MainForm关闭时重新打开LoginForm。
第三个选项是在MainForm关闭时调用Application.Exit()
。 (在How to properly exit a C# application?