我有一个绑定到集合的DataGridView,它经常被更改(不是集合本身,而是对象的属性)。当我开始编辑单元格时,它会快速替换来自PropertyChanged事件的新值。无论如何“暂停”当前正在编辑单元格进行更新。
答案 0 :(得分:2)
您应该可以通过添加BindingSource
来实现您想要的效果。
bindingSource1.DataSource = yourdatasource;
dataGridView1.DataSource = bindingSource1;
在datagridview的CellBeginEdit和CellEndEdit事件中,您可以更改绑定源的RaiseListChangedEvents属性:
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
bindingSource1.RaiseListChangedEvents = true;
}
void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
bindingSource1.RaiseListChangedEvents = false;
}
我使用后台工作程序对其进行了测试,其中一个睡眠由一个按钮启动,并在此之后更新绑定列表。我按下按钮然后编辑了一个单元格,在计时器到期后,我对单元格的更改仍然保持。
当我没有开始编辑时,单元格的更改已更改。
需要注意的一点是,这是针对整个绑定源,而不是特定的单元格。
答案 1 :(得分:1)
如果你总是希望只有当你离开字段时(或者从代码中更新字段时)才更新绑定属性,那么我认为你应该使用DataBindingMode.OnValidated而不是DataBindingMode.OnPropertyChanged你创建你的绑定。