2012-03-09 6 views
2

可能性の重複:私はアウトは完全なアプリケーションを閉じて第一のフォームを閉じることができますどのように
How can I close a login form and show the main form without my application closing?完全なアプリケーションを終了することなく1番目のフォームを閉じる方法は?


C#。私の最初のフォームが、ユーザー名とパスワードを入力した後にフォームをロギングしていて、フォームが閉じていて、他のフォームを開いておく必要がある場合は、例として挙げられます。

その後、私はそれが動作this.Hide()を試してみましたが、私のフォームはまだちょうどUIから隠され実行されている。:(私はthis.close()を試みたが、私の完全なアプリケーションを終了します。あなたのProgram.csで

TY

+0

できません。ログインをプライマリフォームとして使用しないでください。セカンダリフォームとして使用してください。それを開いてクレデンシャルを取得し、次に正常に閉じます。 –

答えて

0

、あなたは

他のフォームにログインフォームを表示させて、その情報をユーザーから取得し、ユーザーがそのフォームを使用することができるようにすることができます。あなたの他のフォームに戻ってください。

0

これは、閉じるウィンドウがメインアプリケーションのウィンドウであるためです。そのウィンドウを閉じるとアプリケーション全体が終了します。

  1. 、例えば、メインフォームのLoadイベントハンドラで
  2. ためLoginFormを二Formを作成します(いずれかが存在しない場合は1を追加)、LoginFormを依頼することを示しています。今ここに

    は修正がありますユーザが自分の資格情報を入力する。

あなたは資格証明書が良好であり、この場合には、メインウィンドウが表示されますと、アプリケーションが正常に動作するか、メインウィンドウを閉じてアプリケーション全体がするだろう場合は、イベントハンドラから復帰するか、これらの資格情報を確認したら、シャットダウン。

5

実際は非常に簡単です。 Program.cs Main staticメソッドでは、次のコードを使用してLoginFormを起動します。

単にこのようにそれを閉じる前に、あなたの次のフォームを起動することを忘れないあなたのLoginFormから次に
var myLoginForm = new LoginForm(); 
myLoginForm.Show(); 
Application.Run(); 

、:

var myNextForm = new NextForm(); 
myNextForm .Show(); 

this.Close(); 

あなたがいうだけで、ログインがちょうど次の操作を行い失敗した後、アプリケーションを終了する場合:

this.close(); 
Application.Exit(); 

希望すると助かります!

0

フォームで作業する場合、Application.Run()を呼び出すと、アプリケーションのメインスレッドがフォームUIスレッドに切り替わるだけです。フォームがClose()を呼び出すと、何らかの処理が必要なときに処理を終了し、Application.Run()呼び出しから処理を続行します。ログインフォームのプロパティ(frmLogin.LoginSuccessfulなど)が設定されている場合は、この後にできることはApplication.Run()を次のフォームで実行します。

ただし、これはベストプラクティス(IMO)ではありません。あなたがしなければならないのは、メインフォームからログインフォームを開いてから、メインフォームがログインフォームが閉じた後も引き続き実行されるということです。