2017-02-12 41 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

相關問題