Вы можете достичь желаемого, добавив BindingSource
.
bindingSource1.DataSource = yourdatasource;
dataGridView1.DataSource = bindingSource1;
В событиях CellBeginEdit и CellEndEdit объекта datagridview вы можете затем изменить свойство RaiseListChangedEvents источника привязки:
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
bindingSource1.RaiseListChangedEvents = true;
}
void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
bindingSource1.RaiseListChangedEvents = false;
}
Я проверил это с помощью фонового рабочего с внутренним сном, запускаемым кнопкой, и обновлением списка привязок после этого.Я нажал кнопку, затем отредактировал ячейку, и после истечения таймера мои изменения в ячейке все еще сохранялись.
Когда я не начал редактировать ячейку, изменения в списке были изменены.
Следует отметить, что это относится ко всему источнику привязки, а не к конкретной ячейке.