【发布时间】:2017-02-12 13:26:03
【问题描述】:
我是 C# 的初学者,我正在尝试制作 WFA 应用程序。但是有一个问题。当我运行它时,它显示第一个(登录)表单,如果我在没有登录的情况下关闭它,它会正常工作,但是当我登录时,第一个表单隐藏,第二个表单显示,如果我通过单击 X 按钮关闭它,表单消失了,但我可以看到任务管理器中正在运行的进程。在第二个表单上也是注销按钮,如果我单击按钮,它会隐藏第二个表单,并显示第一个(登录)表单,如果我关闭它,仍然进程在后台运行。 通过 X 按钮关闭应用程序时,如何停止在后台运行的进程? 我正在搜索,但找不到解决问题的方法。 (我发现了一些可以附加到进程并查看线程的东西,但是它们太多了)
有隐藏创建表单的代码等:
如果登录 frmLogin 隐藏 -> 显示 frmMail
如果注销 frmMail 隐藏 -> 显示 frmLogin。
如果用户成功登录:
this.Hide();
frmMail f2 = new frmMail();
f2.Show();
如果用户点击“退出”按钮:
this.Hide();
frmLogin f1 = new frmLogin();
f1.Show();
我找到了解决方案,如果每个人都有同样的问题,这可能会有所帮助。 How to switch between forms without creating new instance of forms?
How do I prevent the app from terminating when I close the startup form?
【问题讨论】:
-
进程还在运行,因为启动窗体还没有关闭。它是隐藏的,用户无法对其进行任何操作。您似乎还创建了一个新的登录表单,而不是使用现有的登录表单。好吧,这不是这样做的方法。很多可能的修复,但请考虑changing the way your app terminates,这样您就不必隐藏任何内容,只需关闭不需要的窗口即可。
-
@HansPassant 现在我知道了。我将该代码(从改变方式..)粘贴到 Program.cs,但我不太确定我需要在 frmLogin.cs 和 frmMail.cs 中做什么才能使其正常工作。
-
不要调用 Hide(),调用 Close()。显示新表格后。现在很简单。
标签: c# .net winforms visual-studio