私は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?
起動フォームがまだ閉じられていないため、プロセスはまだ実行されています。それは隠されているので、ユーザーはそれを使って何もできません。また、既存のログインフォームを使用するのではなく、新しいログインフォームを作成するように見えます。まあ、それはそれを行う方法ではありません。可能な修正がたくさんありますが、[アプリケーションの終了方法を変更する](http://stackoverflow.com/a/10769349/17034)ので、何も隠す必要はなく、必要のないウィンドウを閉じることもできます。 –
@HansPassant今私は知っている。私はそのコードをchaningからProgram.csに貼り付けましたが、私はfrmLogin.csとfrmMail.csで何をする必要があるのかよく分かりません。 – belmo
Hide()を呼び出さず、Close()を呼び出します。新しいフォームを表示した後。今は簡単です。 –