-1

確認メッセージに問題があります.2 つのメッセージ ボックスがあり、最初のメッセージ ボックスは「終了しますか?」と尋ねます。2 つ目は、「よろしいですか!?」と尋ねます。私の問題は、最初の MessageBox で「終了しますか?」というメッセージが表示されたときに「はい」を選択した場合です。表示されても、2 番目の MessageBox は引き続き表示されます。

namespace WindowsFormsApplication5
{
    public partial class Form1 : Form
    {

        private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
        {
            var confirmationBox = MessageBox.Show(@"Do you want to quit", @"Title",
                                                  MessageBoxButtons.YesNo);
            var confirmationBox2 = MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo);


            if (confirmationBox == DialogResult.Yes)
            {
                if (confirmationBox2 == DialogResult.No)
                {
                    e.Cancel = true;
                }
            }

        }

    }
}
4

2 に答える 2

6

最初の結果を検査するまで、2 番目のメッセージ ボックスを表示しないでください。

var confirmationBox = MessageBox.Show(@"Do you want to quit", @"Title",
    MessageBoxButtons.YesNo);

if (confirmationBox == DialogResult.Yes)
{
    var confirmationBox2 = MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo);
    if (confirmationBox2 == DialogResult.No)
    {
        e.Cancel = true;
    }
}

PS このようなダイアログでユーザーを悩ませるのは迷惑です。今すぐ閉じてはならないという本当にやむを得ない理由がない限り、これを行わないことを検討してください (つまり、操作の途中で無効な状態のままになったり、データが保存されていない場合)。

于 2013-01-15T19:14:44.580 に答える
0

何が起こっているかというと、メッセージ ボックスを表示してから、各応答をチェックしています。

あなたがしたいことは、あなたの if ステートメントの中で、ショーを行い、応答をチェックすることです。

if (MessageBox.Show(@"Do you want to quit", "Title", MessageBoxButtons.YesNo) == DialogResult.Yes) {
    if (MessageBox.Show(@"Are you sure?", @"", MessageBoxButtons.YesNo) == DialogResult.No) {
       e.Cancel = true; 
    }
}
于 2013-01-15T19:24:52.760 に答える