投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/3/11 09:54:24
DataSet の EnforceConstraints プロパティをオフにした状態であれば、
その下の DataTable が制約違反な状態…たとえば主キー重複があっても
受け入れるようになります。
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/dataset-datatable-dataview/datatable-constraints


EnforceConstraints プロパティを戻せばエラー判定が再開されて
例外として通知されます。

どの行でエラーになっているのかは、DataTable の GetErrors メソッドで得られます。
行にエラーがあるかは、DataRow の HasErrors プロパティで得られます。
行内のどの列がエラー要因なのかは、DataRow の GetColumnsInError メソッドで得られます。
エラー内容は、DataRow の GetColumnError メソッドで得られます。


DataGridView については、ShowCellErrors / ShowRowErrors プロパティの指定により、
こうしたエラー状態を表示するかどうかを制御できます。

DataGridView にエラーアイコンを表示する方法は、下記が参考になるかと思います。
https://dobon.net/vb/dotnet/datagridview/showcellerrors.html


> 自分で作ったボタンを押すとテーブルアダプタのアップデートメソッドが働き、
型付DataSet をお使いなのですね。
Update メソッドを呼びだす前に、入力内容の制約チェックを実施しておきましょう。


> 「Data Error イベントをハンドルしてください」と表示されてしまいました。
Data Error イベントではなく、
DataError イベントですね。

DataGridView の DataError イベントでは、引数 e から、
問題となった行・列・例外内容を拾うことができます。
そして、e.ThrowException と e.Cancel の組み合わせにより、
例外を握りつぶすのか、そのまま例外処理を続けるのかを指示できます。