シナリオは次のとおりです (DataSet 内の DataTable にバインドされた BindingSource を使用します)。
- ユーザーが新しいアドレス帳の連絡先を作成し、データ バインドされたコントロールに名と姓を入力します。
- そのイベント ハンドラーが BindingSource.EndEdit() を呼び出します。
- その後、彼は間違いに気づき、メール アドレスを追加しました。
- しかし、彼が [適用] を押すと、検証が失敗する (無効な電子メール形式) ため、EndEdit() は呼び出されません。
- 彼は編集を行わないことに決め、イベント ハンドラが BindingSource.CancelEdit() を呼び出す [キャンセル] ボタンを押します。
- しかし、BindingSource は姓と名だけで電子メールを持たない新しい連絡先に戻すのではなく、レコード全体を削除しました。
最後に EndEdit() が呼び出されてからのアクションのみを元に戻す方法はありますか? CancelEdit() がどのように機能するはずだったのかという印象を受けました。