我有一个bindingList<T>
,绑定列表的每个对象都实现INotifyPropertyChanged
,
在我的WinForm中,我使用了BindingSource并将其数据源设置为BindingList<T>
,然后将一些文本框绑定到BindingList中每个项目的属性(我使用此winform进行CRUD操作):
tbName.DataBindings.Add("Text", myBindingSource, "Name", true);
tbFamily.DataBindings.Add("Text", myBindingSource, "Family", true);
我还有一个取消编辑按钮。但是当我正在编辑一个记录并且我点击取消按钮时,只有最后编辑的字段取消,我想取消整行,所有值恢复到编辑前的值,我该怎么办?
答案 0 :(得分:2)
要取消对BindingSources
当前对象所做的编辑,BindingSource中包含的类型需要实现IEditableObject Interface
答案 1 :(得分:0)
我有同样的问题没有任何答案。 简单的方法是在按下“取消”按钮时重新加载bindingSource。
答案 2 :(得分:0)
你不能通过BindingSource.CancelEdit来做到这一点。相反,您可以在编辑模式下取消绑定单个绑定控件(如TextBoxes),然后如果用户决定取消新输入的值,则再次将它们绑定到bindingsource。否则如果一切顺利并且用户决定保存它们,则用新的值替换BindingList上的旧值并保留它们。