在绑定源上取消编辑不会取消对象的所有已编辑字段



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

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

而且我还有一个用于取消编辑的按钮。 但是当我编辑记录并单击"取消"按钮时,只有上次编辑的字段取消,我想取消整行并且所有值都恢复到编辑前的值,我该怎么做?

若要取消对BindingSources Current 对象所做的编辑,BindingSource 中包含的类型需要实现 IEditableObject 接口

我遇到了同样的问题,没有任何答案。简单的方法是在按"取消"按钮时重新加载绑定源。

你不能

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

最新更新