2017-11-07 11 views
0

私は以下のコードを使って、アプリケーションアプリケーション全体を終了します。いいえ質問messagebox私の問題は、何度かメッセージを2回取得したことです。私のアプリケーションを終了するはいいいえメッセージボックス

いずれにせよ、私はなぜそれが起こっているのを助けることができますか?

private void AppClose_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 

    private void F0100_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     DialogResult result; 
     result = MessageBox.Show("Are you sure you want to exit?", "Exit Message", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
     if (result == DialogResult.Yes) 
     { 
      //Environment.Exit(1); 
      Application.Exit(); 
     } 
     else 
     { e.Cancel = true; } 
    } 
+0

あなたの 'Show'呼び出しに十分なパラメータがないようです。 – DonBoitnott

+0

だから、このフォームだけではなく、アプリケーション全体が強制的に強制的に強制終了しようとしていますか?そして、このフォームはメインフォームではありません...そうですか? – DonBoitnott

+0

@DonBoitnott申し訳ありませんmiss-typos – sam

答えて

0

次にthis answerが役立つかもしれません。基本的には、あなたがコメントアウトしたものを使用する必要があります:Environment.Exit(0)Applicationは、フォームを終了しようとしているを終了するための優雅な試みです。あなたのフォームはまだ開いているので、2回目のFormClosingコールを受信します。それはすべてのタイミングですが、実際には、プロンプトが2回表示されることがほとんどです。

1

私はそのような場合は、通常、あなたがFormClosingからYes枝の下Application.Exit()を行う必要はありません。つまりあなたはこのForm

Application.Run(new Form1());としての起動問題のフォームがメインフォームであると仮定しています。ます。また FormClosingEventArgs.CloseReasonを確認してくださいと言うときに、あなたが余分なポップアップを作成しない:だからあなたのコードは、余分な FormClosingイベント

NOTEを作成し、

private void F0100_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason != CloseReason.UserClosing) 
     return; 

    DialogResult result; 
    result = MessageBox.Show("Are you sure you want to exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
    if (result != DialogResult.Yes) 
    { 
     e.Cancel = true; 
    } 
} 

余計Application.Exit()コール以下のようなものでなければなりませんユーザーはログオフしているか、プロセスを強制終了しています。

関連する問題