アットウィキロゴ

.NET データバインディング

基本的なスタンス

単発(?)の不正な入力は許可しない(エラーメッセージを出して、元の値に戻す。エラーバルーンの出番なし)。型違いのエラーもこれに含まれる。

※ロストフォーカスできないような仕様にはしない(ほっとくとこのようになるが(型違いの場合)) 。e.cancel = falseでOK実現

複合的な条件にひっかかる場合は、エラーバルーンを出す(一意性の制約など?)。

複合的な条件で、いったん入力を許可したいのに(型エラー以外ならいったん許可することができるはず)、勝手にe.cancel=falseのような動作になってしまうときどうするか?(エラーアイコンを出して保留にしたいのだが)

EnforceConstraint=falseで、エラーが出ないようにはできるが、こうすると、全くエラーが出なくなってしまうので、エラーバルーンも出せない(エラーがどこで起きているか、エラーメッセージがなにかが引き出せない)

 一つの方法としては、EnforceConstraint=falseのタイミングで、起こるエラーをキャッチし、それに応じてエラーバルーンをだすか。しかし、バルーンはエラーの書き込みが行われたらすぐ出るほうがベターだし、また、これだとバルーンを消すタイミングが分からない。

 

どうも、 EnforceConstraint=true実行時に、勝手にエラー個所にバルーンが付くようだ(例外をキャッチしないと、そもそもエラーがあった時点でプログラムが落ちてしまうが)

 

 

原則として、DataTableがDataGridViewに関連づいているときは、DataGridView経由で変更を行う(Changedイベント発動のため)

 

エラー処理

バインド元と型が違う値(整数のところに少数や、Doubleのところに非数字文字列)をフォームに入力した場合

 

 

イベント発生順序(一般的なコントロールオブジェクト)

1 Leave 入力のフォーカスがコントロールを離れた場合に発生する。
2 Validating 入力値の検査。
イベントをキャンセルした場合、以降のイベントは発生しない。
2.5 Changed (変更があった場合のみ起こる)
3 Validated 入力値の検証終了後に発生する。
4 LostFocus

フォーカスを喪失した場合に発生する。

5 DataError (DataGridViewの場合に発生)

 

 

 

イベントの違い(一般的なコントロールオブジェクト)

イベント 説明
Validating 入力値の検証を行う。
値が適切でない場合は、フォーカスの移動をキャンセルできる。
Validated 入力値の検証後に発生する。
値が適切な場合のみ発生するので、入力エラーは考えなくて良い。

ref. http://blog.livedoor.jp/akf0/archives/51212276.html

 

DataTableのエラーについて

RowErrorプロパティは、自分で書き込みしないとなにも入らないようだ(制約条件違反のときに、自動的にエラーメッセージを入れてくれればいいのに。。)

よって、

 

 

最終更新:2011年06月03日 17:09