2016-12-25 10 views
0

私は、ユーザーがバックグラウンドミュージックを選択するための別個のWindowsフォームを持っています。アプリケーションが閉じられていない限り、そこには常に滞在します。 Application.Exit()が正しく動作しない

private void Music_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     e.Cancel = true; 
    } 

と私のメインのProgram.csで

が、私はそうのようなログインと呼ばれるページを実行します:

Application.Run(new Login()); 

私もFormClosedイベントを持っている私は、コードを使用して音楽フォームを閉じるからユーザーを防ぎます私は、ユーザーが閉じることができないのコードを追加した後、しかしクロス

private void Login_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     Application.Exit(); 
    } 

を押した後、プログラム全体を閉じすべての私のフォームで音楽のフォームは、私のアプリケーションは、メインページ(アプリケーションが私のすべてのフォームで終了することができるように使用されたプログラムの開始ですログインページにあるときに十字を押すことによってのみ終了することができます十字を押す)

私のアプリケーションを正しく終了させる方法があるか、または他のフォームの終了に影響を与えずに音楽フォームを閉じることができないようにする方法があるかどうかを知りたい。ありがとうございました

+0

あなたは 'e.Cancelを使用してその操作をキャンセルしているので、音楽の形式を使用して閉じることができません。目的の動作(音楽のフォーム閉じユーザーを防ぐ)を取得するには、FormClosingEventArgsCloseReasonプロパティを利用することができます= true; '..あなたじゃない? – user3185569

+0

ya私は音楽のフォームを閉じることができないようにし、メインフォームを閉じることによってのみ閉じることができます。 –

+0

そして、 'Application.Exit();'を 'Environment.Exit(0);'に置き換えてください。 'Application.Exit();'が失敗している 'Music_FormClosing'を呼び出すためです。 – user3185569

答えて

2

Music_FormClosingのコードは、アプリケーションが終了しないようにしています。

private void Music_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason == CloseReason.UserClosing) 
     e.Cancel = true; 
} 
+0

'CloseReason'が指定されたコンテキストで有効でない型であるというエラーが発生しました –

+0

単にタイプミス(SOエディタ入力)。答えで述べたように、渡された 'FormClosingEventArgs'のプロパティです。 –

+0

私は私の問題を解決するために管理:) –

関連する問題