Как приостановить обновление текущей редактируемой ячейки в ограниченном DataGridView? - PullRequest
2 голосов
/ 29 июня 2011

У меня есть DataGridView, привязанный к коллекции, которая часто изменяется (не сама коллекция, а свойства объектов). Когда я начинаю редактировать ячейку, она быстро заменяется новым значением, полученным из события PropertyChanged. Есть ли в любом случае «приостановить» редактирование в настоящее время ячейки от обновления.

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Вы можете достичь желаемого, добавив 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;
}

Я проверил это с помощью фонового рабочего с внутренним сном, запускаемым кнопкой, и обновлением списка привязок после этого.Я нажал кнопку, затем отредактировал ячейку, и после истечения таймера мои изменения в ячейке все еще сохранялись.

Когда я не начал редактировать ячейку, изменения в списке были изменены.


Следует отметить, что это относится ко всему источнику привязки, а не к конкретной ячейке.

1 голос
/ 29 июня 2011

Если вы всегда хотите, чтобы связанное свойство обновлялось только тогда, когда вы выходите из поля (или когда поле обновляется из кода), то я думаю, что вы должны использовать DataBindingMode.OnValidated вместо DataBindingMode.OnPropertyChanged в данный момент. Вы создаете свою привязку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...