2017-02-12 38 views
2

我是C#的初学者,我试图让WFA应用程序。但是有一个问题。当我运行它,它显示第一(登录)窗体,如果我没有登录关闭它,它会正常工作,但是当我登录,第一次形成隐藏,secound窗体显示,如果我通过单击X按钮关闭窗体消失了,但我可以看到进程在任务管理器中运行。在secound窗体上也是注销按钮,如果我点击按钮,它隐藏了secound窗体,并显示第一个(登录)窗体,如果我关闭它,仍然在后台运行。 当通过X按钮关闭应用程序时,如何停止进程在后台运行? 我正在寻找,但我找不到解决方案,我的问题。 (我发现了一些附加处理,看看线程,但有太多的)关闭应用程序后继续进程c#

有代码,其中表单创建墙根等:

如果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?

+1

该进程仍在运行,因为启动窗体尚未关闭。它是隐藏的,用户无法用它做任何事情。您似乎也创建了一个新的登录表单,而不是使用现有的登录表单。那么,那不是做这件事的方法。很多可能的修复,但考虑[改变你的应用程序终止的方式](http://stackoverflow.com/a/10769349/17034),所以你不必隐藏任何东西,只需关闭你不需要的窗口。 –

+0

@HansPassant现在我知道了。我把这些代码粘贴到了Program.cs中,但我不确定我需要在frmLogin.cs和frmMail.cs中做些什么才能使其工作。 – belmo

+0

不要调用Hide(),调用Close()。展示新表单后。现在很简单。 –

回答

0

我会在你的情况做的是非常简单的。 拳我将覆盖FormClose_Event,像这样

void Form_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //And here you can call 
    Application.Exit(); 
    // which this will cause to close everything in your application 
    //Also if you want to be more aggressive, there is another option, you can 
    //use, Environment.Exit(1), which will basically kill you process. 
} 

我希望我的回答可以帮助你,有一个愉快的一天!

+0

谢谢,就是这样。我使用类似这样的代码,它的工作原理! – belmo

相关问题