プロが教える店舗&オフィスのセキュリティ対策術

C#でボタンクリックをキャンセル

こんにちは。

C#+.Netです。
・テキストボックスとボタンを持つフォーム
・ボタンが押された時にテキストボックスの内容をチェックする。
・OKであれば、そのままフォームを閉じる。
・NGであればメッセージボックスを表示して、フォームは開いたまま。
というフォームを作成したいのです。
フォームはShowDialogで表示させます。
ボタンのDialogResultには、DialogResult.OKを設定してあります。
ボタンのClickイベントを使って、メッセージボックスを出すことはできたのですが、フォームを開いたままにすることができません。
あるいは、ボタンのDialogResultはNoneのままにして、イベントハンドラ内から、フォームを閉じる方法がないかと思ったのですが、それもわかりません。

どのようにすればよいのでしょうか?よろしくお願いします。

A 回答 (2件)

DialogResultを利用するのならば、私ならボタンのDialogResultを設定せずに以下のようにします。


(thisはFormクラス)

private void button1_Click(object sender, EventArgs e)
{
if (条件)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
this.Close();
}
else
{
System.Windows.Forms.MessageBox::Show("えらー");
}
}

この回答への補足

お返事遅くなりまして申し訳ありません。
試してみましたところ、this.Close()なしでもthis.DialogResultに値を代入するだけで十分なようです。
private void button1_Click(object sender, EventArgs e)
{
if (条件)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
else
{
System.Windows.Forms.MessageBox::Show("えらー");
}
}
これで、条件成立時に終了、非成立時にメッセージボックスを出して継続となりました。
これが一番簡単なようですね。
ありがとうございました。

補足日時:2010/01/22 16:47
    • good
    • 1

FormのClosingイベントで検証して


NGだった場合 FormClosingEventArgs型の引数eのCancelをTrueにすれば
フォームが閉じられることはありませんよ

この回答への補足

情報ありがとうございます。
その方法で、ESCキーやALT+F4で閉じられた時との区別をつける方法はあるのでしょうか?

補足日時:2010/01/13 09:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A