C# - 窗体应用程序 - 关闭应用程序

4

我需要帮助。我有一个窗体应用程序。每当我点击窗体的“关闭”按钮时,应用程序应该自动关闭。

有人能帮我吗?

谢谢, Justin Samuel。


当您点击关闭时会发生什么?当您说“关闭”时,您是指右上角的叉号还是命令按钮关闭? - BIDeveloper
是的,我指的是窗口顶部的交叉按钮。 - Justin Samuel
我是指窗口顶部的交叉符号。 - Justin Samuel
你不应该需要添加任何东西,所以我怀疑有些东西正在拦截你的事件 - 除非你已经删除了一些自动代码。你能否在窗体加载后设置一个断点,开始逐步执行以显示该窗体。然后单击关闭按钮。逐步执行并查看代码到达何处。另外,尝试添加一个新窗体并关闭它 - 是否可行? - BIDeveloper
您需要告诉我们更多细节。如答案所示,当主窗口关闭时,该应用程序通常会关闭。 - H H
抱歉...但实际上我有一个小表单,当点击按钮时会弹出一个新的表单。现在我希望在用户关闭这个第二个窗口(即按右上角的交叉符号)时关闭应用程序。 注意:打开第二个表单时,第一个表单会隐藏。 - Justin Samuel
4个回答

6
在你的解释之后:
在Form1中,做如下操作:
  Form2 f2 = new Form2();
  f2.ShowDialog();
  this.Close();
  Application.Exit();

假设Form2可以以模态(对话框)的形式显示,我认为这是正确的。


我尝试了你的解决方案,但它没有起作用。我错过了一个要点。在第二个表单中,我启动了一个线程。这可能是任何干扰点吗? - Justin Samuel
Justin,是的,如果线程__不是__后台线程,它将会保持你的进程运行。 - H H
是的,我的线程有一个打开的TcpClient对象。我所需要做的就是关闭这个对象,然后它就可以正常工作了!感谢Henk的指导! - Justin Samuel

2
当主窗体关闭时,Winforms应用程序将自动退出。主窗体是在应用程序的Main方法中实例化并传递给Application.Run方法的窗体。
如果应用程序进程在关闭此窗体时没有退出,则有些东西会阻止它关闭,例如执行某些工作的线程(不是后台线程)。

2
根据您的描述,看起来您的应用程序中可能有多个表单,即使一个表单不可见,它仍在运行。在这种情况下,关闭按钮将关闭该表单,但不会退出应用程序。
您需要为Form_FormClosed事件添加事件处理程序,然后调用Application.Exit() - 理想情况下,如果您想要询问用户是否真的要关闭,还可以处理Form_FormClosing事件。

0

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