验证绑定,取决于单击哪个按钮

Validating binding, depending on which button is clicked

我搜索了很多,但没有找到正确的解决方案。

我有一个 TextBoxDataGridView、3 个 Button 和一个 BindingSource

当我点击 Button 'Change' 时,我设置了绑定,数据从 DataGridView 加载到 TextBox,这有效:

textBox.DataBindings.Add("text", bindingSource, "Name", true, DataSourceUpdateMode.OnPropertyChanged);

当我现在点击 Button 'Cancel' 绑定将被清除:

textBox.DataBindings.Clear();

但数据仍然传输到DataGridView。我认为这是因为 OnPropertyChanged。当我将其更改为 OnValidation 时,我知道它只会在经过验证后才会被保存。

但是我该如何验证或拒绝验证呢?我有2个Button,根据点击的是'Save'按钮还是'Cancel'按钮,应该转成DataGridView还是不转

还有活动

textBox.Validating += textBox_Validating;

我没明白运行,因为这个函数是在我点击按钮之前调用的。

我怎样才能做到这一点?

您可以使用 DataSourceUpdateMode.Never 创建绑定并将其存储在表单级变量(字段)中。然后您可以使用 WriteValue method to apply the changes (respectively 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;