- PR -

DataGridの入力チェックエラーの場合、フォーカスをとめたい

1
投稿者投稿内容
キムチナベ
会議室デビュー日: 2004/12/26
投稿数: 15
投稿日時: 2006-04-17 12:06
お世話になっております。

表題の件ですが、DataGridの入力に対して、入力チェックを行い、エラーの場合はフォーカス遷移せず、もとのセルに止めてほしいですが、どうすればよいですか。

ちなみにセルの入力チェックはDataTable_ColumnChangingイベントを利用して行っています。
また、入力列のTextBoxにValidatingイベントを登録する方法も試してみましたが、
同じ列で上下移動する際、該当イベントは発生しないことが判明しました。
ちなみに、A列のセルに入力してB列に移動する際、Validatingイベントが発生するが、A列で上下に移動する時はイベントが発生しません。

いろいろ試してみましたが、力不足で行き詰まっています。
解決方法のご存知の方ぜひご教授お願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-17 12:48
フォーカスを留めておきたいのは、ダイアログが表示される仕様だからだと予想しますが、お勧めできません。

アクセシビリティ、ユーザビリティを考えると最終チェックに一任すべきだと思います。
どのみち最終チェックは、当然入れているでしょうから。

もし、即時検証もしたいのであれば、ダイアログなどは表示しないでエラーを通知しましょう。
表示色を赤色に変える、ガイド領域でエラー通知するなど。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
キムチナベ
会議室デビュー日: 2004/12/26
投稿数: 15
投稿日時: 2006-04-18 19:23
じゃんぬねっと さん

ご解答ありがとうございます。
フォーカスをとめたいのは、入力した直後に検証を行いたい考えで、実現しようする機能でした。
そうすると、ページング処理とか、DB登録処理のタイミングではもう一回チェックをしなくてもいいのではと考えたのです。

いろいろ試してみましたが、うまくいかなかったので、表示色を赤色に変えて、エラー通知の方式を採用しようと思います。

表示色を赤色に変える処理について、最終チェックのタイミングで、入力値の全部に対してチェックを行い、エラーのセルを赤にすることですね。
セルを抜ける時点で、チェック結果により即時に該当セルを赤にするのは無理かなと思いますが・・・

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-04-18 19:31
引用:

キムチナベさんの書き込み (2006-04-18 19:23) より:

表示色を赤色に変える処理について、最終チェックのタイミングで、入力値の全部に対してチェックを行い、エラーのセルを赤にすることですね。
セルを抜ける時点で、チェック結果により即時に該当セルを赤にするのは無理かなと思いますが・・・


DataGridColumn の派生クラスで Paint メソッドをオーバーライドしてできないですか?
エラーになっているセルの特定をするための機構は必要ですが。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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