私は次の状況に遭遇しました:
try
{
Validate();
myBindingSource.MoveNext();
}
catch
{
if (MessageBox.Show("Do you want to keep editing the record?", "Error",
MessageBoxButtons.YesNo, MessageBoxIcon.Error) == DialogResult.No)
{
myBindingSource.CancelEdit();
}
}
ここで、myBindingSource.DatasourceはDataTableであり、データバインドされたテキストボックスは検証時に更新されます。
現在のレコードのデータバインドされたテキストボックスを無効な状態に変更します(たとえば、主キーが重複しています)。上記のコードスニペットを呼び出すと、当然例外がスローされます。
catchブロックで、データブルの行のフィールドの値は元の値に戻りましたが、テキストボックスの値は同じままです(同じテキストボックスの値が必要です)。
同じスニペットを再度呼び出すと、例外はスローされません(DataTableの値は正しいです)。
私の質問は、データをDataTableに再度送信するテキストボックスを作成するにはどうすればよいですか?
PSコードスニペットの最初の呼び出し後にテキストボックスの値を変更した場合、DataSetは変更を受け取ります。