bindingsource上的CancelEdit不会取消对象的所有已编辑字段

时间:2013-02-03 08:07:06

标签: c# data-binding inotifypropertychanged bindingsource bindinglist

我有一个bindingList<T>,绑定列表的每个对象都实现INotifyPropertyChanged, 在我的WinForm中,我使用了BindingSource并将其数据源设置为BindingList<T>,然后将一些文本框绑定到BindingList中每个项目的属性(我使用此winform进行CRUD操作):

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

我还有一个取消编辑按钮。但是当我正在编辑一个记录并且我点击取消按钮时,只有最后编辑的字段取消,我想取消整行,所有值恢复到编辑前的值,我该怎么办?

3 个答案:

答案 0 :(得分:2)

要取消对BindingSources当前对象所做的编辑,BindingSource中包含的类型需要实现IEditableObject Interface

答案 1 :(得分:0)

我有同样的问题没有任何答案。 简单的方法是在按下“取消”按钮时重新加载bindingSource。

答案 2 :(得分:0)

你不能通过BindingSource.CancelEdit来做到这一点。相反,您可以在编辑模式下取消绑定单个绑定控件(如TextBoxes),然后如果用户决定取消新输入的值,则再次将它们绑定到bindingsource。否则如果一切顺利并且用户决定保存它们,则用新的值替换BindingList上的旧值并保留它们。