C# 如何在打开另一个Winform时关闭一个Winform
我的项目中有两个Win表单,一个是C# 如何在打开另一个Winform时关闭一个Winform,c#,.net,winforms,C#,.net,Winforms,我的项目中有两个Win表单,一个是Login表单,另一个是Main表单。我在Login表单中有一个按钮,单击该按钮应打开Main表单并关闭当前(登录)表单 我试过这种方法 private void button1_Click(object sender, EventArgs e) { Mainform frm = new Mainform(); frm.Show(); this.Hide(); } 但它只隐藏了当前的形式。
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
打开,在一秒钟内,两个表单都关闭了,程序停止调试
如何从
Login
表单正确打开Mainform
,而不必手动停止调试?您可以通过这种方式实现
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;
}
您的问题是,您将Form2托管在Form1中 看起来,应用程序从Form1开始,然后在其中加载Form2, 现在,您关闭Form1并希望Form2在您刚刚杀死它的主机时仍然活着 更好的方法是使用不同的表单或首选的静态类初始化应用程序,这些表单将在应用程序的生命周期中“持续”
这正是为什么当您启动一个新的Windows窗体项目时,会在您的解决方案中添加一个名为Program.cs的类。正如@polisha989所说,如果您希望在MainForm关闭时终止应用程序,或者最终在那里重新打开Loginform,您可以在Program.cs中托管MainForm 第二步是将LoginForm的引用传递给MainForm,并在MainForm关闭时重新打开LoginForm
第三个选项是在MainForm关闭时调用
Application.Exit()
。(在此处查找更多信息您使用的是哪种表单?它绝对不是ASP.NET.WPF或Winforms?Visual Studio中的Windows表单刚刚试用过它。当我关闭主表单时,登录表单再次出现,关闭登录表单后,我必须手动停止调试。显示更多详细信息代码,因为没有理由让登录表单出现错误。)在mainform退出方法中,您可以使用Environment。退出(0)
则不必手动停止调试huseEnvironment。退出(0)
在mainform退出方法中,则一切都将关闭,您不必手动停止调试伟大、愉快的编码:)