0

私のプロジェクトには、ユーザーが編集して DB に保存できる DataGridView があります。DataGridView に検証を追加しようとしています。(特定の列は必須であり、数値 (具体的には double) のみにすることができます)。

舞台裏で .Net によって行われる自動解析を回避するのに問題があります。DataGridView の動作は、ユーザーが必須フィールドを空白のままにするか、double として解析できないもの (テキストなど) を入力するかによって異なります。

より簡単なケース: ユーザーが必須フィールドを空白のままにして [保存] をクリックした場合。[保存] ボタンのクリック イベントが発生し、セルの Value プロパティが に設定されていることを確認できますDBNull。この場合、セルのErrorTextプロパティを設定して を表示しMessageBoxます。

Harder Case : ユーザーが double として解析できないテキスト (「asdf」など) を入力した場合。これが発生すると、セルがフォーカスを失うとすぐに、組み込みの .Net 検証がバックグラウンドで実行され、スタック トレースを示すメッセージ ボックスが表示されます。この検証を完全に無効にして、ユーザーが [保存] をクリックしたときに独自の検証を行うだけです。

(その時点までは、無効なデータは問題ではありません)。誰もこれを行う方法を知っていますか?

4

2 に答える 2

0

SQLクエリを編集してfloatをnvarcharに変換することで、問題を解決できました。現在、DataGridView はデータ型がテキストであると考えており、これはどのような種類のデフォルト ロジックでも検証できません。また、ユーザーが Enter キーを押さない限り値がコミットされないこともわかったため、検証コードは Value ではなくセルの EditedFormattedValue プロパティに対してチェックを行います。

于 2013-08-09T15:34:26.167 に答える