2012-02-19 16 views
2

私は新しく作成されたフォームの間をスウィッチしようとしましたが、下のような古いものを閉じる前に新しいスクリーンを作成しているのを見たら、アプリケーション全体が終了します。1つのウィンドウを閉じるとアプリケーション終了を防ぐ方法を教えてください。

Inital作成

static void Main() 
{ 
Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(new Login()); 
} 

このログイン画面には、現時点では私は実行中のアプリケーションを維持するために、画面を隠してる新しいウィンドウを作成するにつながります。 MainScreen内

new MainScreen(uID, this).Show(); 
this.Hide(); 

は、私は新しいログイン画面を作成する必要があることを意味し「変更ユーザー」ボタンを持っていますが、以下のコードは、単に全体の実行中のアプリケーションを終了します。

Login newLoginForm = new Login(this); 
mainLoginForm.Close(); 

これを完全に間違った方法で設計しているのですか、それとも正しい方法を使用していないのですか?どんな助けも素晴らしいだろう。

+0

[Windowsフォームの複数のユーザー](http://stackoverflow.com/a/8898718/719186)が役立つ可能性があります。 – LarsTech

答えて

3

あなたが最初のログインは、ファイル名を指定して実行(新しいログイン())から、あなたのアプリケーションの終了を形成閉じ ので、あなたはファイル名を指定して実行(新しいMainScreen())で始める必要があり、このフォームのコンストラクタまたはのForm_Load内部 はログインを呼びます。

+0

ヘイスティーブ、あなたの返事をありがとうが、私は本当にあなたが言っているものを得ることはありません。ログイン画面が最初に表示される画面にしたい。 また、ログイン画面で新しいメイン画面を作成してからメイン画面を閉じると、ログイン画面がまだ隠れていてもアプリケーションは終了します。 – r0bb077

+0

あなたの** MainScreen **は 'Shown'イベントの後でのみ画面に表示されます。したがって、MainScreenコンストラクタまたは** MainScreen_Load **イベントを使用して、ログインフォームを表示し、ユーザーが資格情報に失敗した場合やアプリケーションを続行した場合は、結果(Application.Exit())に対して適切な処置を取ることができます。最終的にメイン画面が表示され、ユーザーは現在のユーザーを再び変更することができます。 – Steve

+0

こんにちはスティーブ、素晴らしいもの、ありがとう! – r0bb077