4

私はbindingList<T>バインディングリストの各オブジェクトが実装することを持っていINotifyPropertyChangedます.私のWinFormでは、BindingSourceを使用し、そのデータソースを設定してBindingList<T>、BindingListの各項目のプロパティにいくつかのテキストボックスをバインドします(CRUD操作にこのwinformを使用します):

tbName.DataBindings.Add("Text", myBindingSource, "Name", true);
tbFamily.DataBindings.Add("Text", myBindingSource, "Family", true);

また、編集をキャンセルするためのボタンもあります。しかし、レコードを編集しているときに [キャンセル] ボタンをクリックすると、最後に編集したフィールドのみがキャンセルされ、行全体をキャンセルしてすべての値を編集前の値に復元したいのですが、どうすればよいですか?

4

3 に答える 3

0

BindingSource.CancelEdit ではできません。代わりに、編集モードで TextBoxes などの単一のバインドされたコントロールのバインドを解除し、ユーザーが新しく入力した値をキャンセルすることを決定した場合は、再びそれらを bindingsource にバインドできます。それ以外の場合は、すべてがうまくいき、ユーザーがそれらを保存することを決定した場合、BindingList の古い値を新しい値に置き換えて永続化します。

于 2013-09-10T07:07:48.693 に答える
0

私は何の答えもなく同じ問題を抱えていました。簡単な方法は、キャンセル ボタンを押したときに bindingSource をリロードすることです。

于 2013-02-07T15:46:30.350 に答える