关闭主窗体。

7

我正在使用C# Windows表单开发一个简单的应用程序。主要表单打开另一个表单,但我不希望两个表单都存在。我希望当第二个表单打开时,第一个表单关闭。由于第一个表单是主要使用的,因此需要实现这一功能。

    this.Close();

展示第二个表单后,两个表单都将关闭。因此,我使用了这个方法代替。
    private void btnSubmit_Click(object sender, EventArgs e)
    {
         frmData QS = new frmData();
         QS.Show();
         this.WindowState = FormWindowState.Minimized;
         this.ShowInTaskbar = false;
    }

    private void frmData_FormClosed(object sender, FormClosedEventArgs e)
    {
        Application.Exit();
    }

我想知道还有没有其他方法来完成这个。

任何帮助都将不胜感激。


你可以像这里所示的那样隐藏表单:https://dev59.com/Y1PTa4cB1Zd3GeqPjG1M - keyboardP
3个回答

13

不要将主表单作为参数传递给 Application.Run

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

MainForm frmMain = new MainForm();
frmMain.Show();

Application.Run();
因此,在显示另一个表单时,您将能够关闭它:
private void btnSubmit_Click(object sender, EventArgs e)
{
     frmData QS = new frmData();
     QS.Show();
     this.Close();
}

关闭应用程序应该使用

Application.Exit();

3
@SriramSakthivel 真的吗?主表单与应用程序生命周期有什么关系? - Sergey Berezovskiy
+1 刚刚理解了修改后的代码..已经删除了我的评论。这就是我一直在寻找的..谢谢!!!! - user2509901
@lazyberezovsky 是的,我刚试了一下。只有主窗体,我创建了一个名为show的新窗体,然后关闭了第一个窗体,应用程序就终止了。 - Sriram Sakthivel
@SriramSakthivel 看一下 Program.cs 文件。你会发现主窗体实例被传递给了 Application.Run 方法。没有其他方法可以通过关闭窗体来终止应用程序。 - Sergey Berezovskiy
@不,我只是删除了,以前不知道这个功能,感到好奇然后尝试了一下。你以前试过吗? - Sriram Sakthivel
显示剩余2条评论

3
隐藏第一个表单。
private void btnSubmit_Click(object sender, EventArgs e)
{
     frmData QS = new frmData();
     QS.Show();
     this.Hide();
}

private void frmData_FormClosed(object sender, FormClosedEventArgs e)
{
    Application.Exit();
}

+1 你比我先回答了。完全和我想说的一样!! - Dozer789

0

实际上,如果关闭主窗体,就没有可能关闭同一项目的所有窗体。你只能将其隐藏。

顺便说一下,你可以通过以下简单的一行代码打开和显示一个窗体:new FormName().Show();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接