我搜索了很多,但我找不到合适的解决方案。
我有TextBox
,DataGridView
,3 Button
和BindingSource
。
点击Button
'更改'我设置了绑定,数据从DataGridView
加载到TextBox
,其工作原理为:
textBox.DataBindings.Add("text", bindingSource, "Name", true, DataSourceUpdateMode.OnPropertyChanged);
我现在点击Button
'取消'绑定将被清除:
textBox.DataBindings.Clear();
但数据仍然转移到DataGridView
。我认为这是因为OnPropertyChanged
。当我将其更改为OnValidation
时,我知道它只会在验证后保存。
但我如何验证或拒绝验证?我有2 Button
秒,具体取决于' Save'按钮或'取消'单击按钮,它应该转移到DataGridView
或不转移。
还有事件
textBox.Validating += textBox_Validating;
我没有让它运行,因为在点击按钮之前调用了这个函数。
我怎样才能做到这一点?
答案 0 :(得分:2)
您可以使用DataSourceUpdateMode.Never
创建绑定,并将其存储在表单级变量(字段)中。然后,您可以使用WriteValue
方法应用更改(分别为ReadValue
以还原更改)。
这样的事情:
形式:
Binding nameBinding;
点击更改按钮:
nameBinding = textBox.DataBindings.Add("Text", bindingSource, "Name", true, DataSourceUpdateMode.Never);
点击取消按钮:
nameBinding.ReadValue();
textBox.DataBindings.Clear();
nameBinding = null;
点击保存按钮:
nameBinding.WriteValue();
textBox.DataBindings.Clear();
nameBinding = null;