DOBON.NET DOBON.NETプログラミング掲示板過去ログ

条件分岐でメッセージボックス

環境/言語:[WinXP/C#]
分類:[.NET]

お久しぶりです。
YUSKです。覚えてる人いるかな?

質問なのですが、まずボタンをクリックしたら、メッセージボックス(OK)がでるようにしました。
そしたOKをクリックするとメッセージボックス(YES,NO)がでるようにしました。
そこまではできました。

次にifでDialogResultがYESの場合は○○して。
と言う風にコードを書きました。
そして最後にelseでそれ以外の場合(NO)の時。
しかし、ここで問題がおきました。

if(result == DialogResult.YES)
だと、YES,NOを選択するのに関わらずelseが実行され(YESを選んでもNOを選んでも同じ操作になる)、
if(result != DialogResult.No)
だとYES,NOの選択に関わらずYESが実行されてしまいます。
これを、条件分岐できちんとYESを選んだらYESの操作、NOを選んだらelse(NO)の操作にしたいのです。

ちなみに操作と言うのは、YESを選んだらメッセージボックスを開き、OKを押すとフォームが開き、NOを選んでもOKボタンがでてフォームが開くものです(フォームを開く部分はできています)。

この説明でよく分からないかもしれませんので、コードを載せておきます。

{
DialogResult result;

result = MessageBox.Show("新規?それがどうかしたのか?","何のことやらさっぱり",
MessageBoxButtons.OK, MessageBoxIcon.Warning);

MessageBox.Show("ああもう一つ開いたきたいんだね","ああそういうことね",
MessageBoxButtons.YesNo,MessageBoxIcon.Warning);

if(result != DialogResult.No)
{
MessageBox.Show("ほいっと","お望みどおり!",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
Form1 f = new Form1();
//ここではモードレスフォームとして表示する
f.Show();
}

else
{
MessageBox.Show("開く","開くぅ",
MessageBoxButtons.OK,MessageBoxIcon.Error);
Form1 f = new Form1();
//ここではモードレスフォームとして表示する
f.Show();
}
}
> if(result == DialogResult.YES)
> だと、YES,NOを選択するのに関わらずelseが実行され(YESを選んでもNOを選んでも同じ操作になる)、
> if(result != DialogResult.No)
> だとYES,NOの選択に関わらずYESが実行されてしまいます。
> これを、条件分岐できちんとYESを選んだらYESの操作、NOを選んだらelse(NO)の操作にしたいのです。

>DialogResult result;
>result = MessageBox.Show("新規?それがどうかしたのか?","何のことやらさっぱり",MessageBoxButtons.OK, MessageBoxIcon.Warning);
>MessageBox.Show("ああもう一つ開いたきたいんだね","ああそういうことね",
>   MessageBoxButtons.YesNo,MessageBoxIcon.Warning);

メッセージボックスの結果(YES,NO)を知りたいのは二つ目に
表示されるメッセージボックスではないでしょうか?
それでしたら、OKボタンしか持っていないメッセージボックスの
結果を取得しても意味がありません。単純なタイプミスだと思いますが…(^^;
助言ありがとうございます。
タイプミスかどうかは分かりませんが、
MessageBox.Show("ああもう一つ開いたきたいんだね","ああそういうことね",
MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
を、
result = MessageBox.Show("ああもう一つ開いたきたいんだね","ああそういうことね",
MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
にしたらできました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板