2017-02-12 16 views
2

私はC#の初心者で、WFAアプリケーションを作成しようとしていました。しかし、1つの問題があります。私はそれを実行すると、それは最初の(ログイン)フォームを表示し、ログインせずに閉じると正常に動作しますが、ログインすると最初のフォームが非表示になり、secoundフォームが表示されます。消えましたが、私はタスクマネージャーで実行中のプロセスを見ることができます。 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今私は知っている。私はそのコードをchaningから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

関連する問題