- PR -

C# Validatingイベントの制御について

1
投稿者投稿内容
パテル
会議室デビュー日: 2005/12/06
投稿数: 2
投稿日時: 2005-12-06 15:46
はじめまして、パテルといいます。
宜しく御願いします。

VS.NET 2003 C# にて下記のコントロールをフォーム上に作成します。

1.textBox1
2.btnCancel
3.btnRun

bフ順にTabIndexを設定しています。
textBox1にて入力規則チェックをするためにValidatingイベントを捕捉しようとしています。
また、btnCancelがClickされたときはtextBox1のTextプロパティを空に設定しようとしています。

上記のようなコントロールを配置していた際に、下記のような動作をさせたいのです。

前提条件:textBox1にフォーカスがある。

1.キーボードよりTabキーを押下して、btnCancelにフォーカスを移動
→textBox1のValidatingイベントにて入力規則チェック
2.マウスによりbtnCancelをダウンさせるが、アップ時にマウスをボタンから外す
→1と同様の動作
3.マウスによりbtnCancelをクリック
→textBox1のTextプロパティを空にし、フォーカスをtextBox1に設定する
(Validatingイベントを発行させない)

1,2はフォーカスの移動のみでValidatingイベントを発行させたい。
3はフォーカスも移動し、尚且つクリックされているがValidatingイベントを発行させたくない。という違いがあります。

このような動作をさせることは出来ませんでしょうか?
btnCancelのCausesValidationをfalseに設定したりもしましたが、思っているような動作をさせることは出来ませんでした。

長くなってしまいましたが、ご教授の程宜しく御願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-07 01:43
Focused プロパティで解決できると思います。
Validating イベントのタイミングで Focused プロパティがどうなっているか検証してみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
パテル
会議室デビュー日: 2005/12/06
投稿数: 2
投稿日時: 2005-12-07 16:20
じゃんぬねっとさん回答ありがとうございます。

引用:
Focused プロパティで解決できると思います。
Validating イベントのタイミングで Focused プロパティがどうなっているか検証してみてください。



Focusedプロパティを検証してみました。

1.キーボードよりTabキーを押下して、btnCancelにフォーカスを移動
⇒textBox1:true / btnCancel:false

2.マウスによりbtnCancelをダウンさせるが、アップ時にマウスをボタンから外す
⇒textBox1:false / btnCancel:true

3.マウスによりbtnCancelをクリック
⇒textBox1:false / btnCancel:true

という結果でした。

結果からすると、2,3が同様の結果で、1だけ異なる動作ということになります。
しかし、希望する動作は、1,2が同様の結果で、3だけ異なる動作なのです。

Clickした場合のみ、Validatingを実行したくないのです。
Validatingイベントが発生することは別にいいのですが、何か3を判定できる情報がありませんでしょうか?
Clickイベントはフォーカスイベントが一通り終わってから発生しますよね?
そうなると、Validatingイベント内でClickされているか否かということを判断することは出来ないのでしょうか?
_________________
1

スキルアップ/キャリアアップ(JOB@IT)