DataGridView, связанный с BindingList, не обновляется когда измененное значение

Мне связали DataGridView с BindingList (C# Windows Forms). Если я изменяю одно из значений в объекте в списке, он сразу не обнаруживается в сетке. Если я нажимаю на измененную ячейку или минимизирую, затем максимизируют окно, которое она обновляет правильно, но мне нужна она для случая автоматически.

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

Единственным путем я могу добраться, это для работы...

dataGridView.DataSource = null;  
dataGridView.DataSource = myBindingList

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

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

17
задан C Walker 27 July 2010 в 01:45
поделиться

2 ответа

Уведомления ListChanged об изменении значения элемента поднимаются только если тип элемента списка реализует интерфейс INotifyPropertyChanged.

Взято из: http://msdn.microsoft.com/en-us/library/ms132742.aspx

Итак, мой первый вопрос: Ваш элемент реализует INotifyPropertyChanged правильно?

23
ответ дан 30 November 2019 в 12:26
поделиться

Похоже, что ваше уведомление об изменении объекта не срабатывает / не обрабатывается правильно. Лично я всегда использую объект BindingSource при привязке к dataGridView.

Я бы проверил DataGridView FAQ и DataBinding FAQ и поискал уведомление об изменении объекта.

Если вы используете ADO.Net, не забудьте вызвать методы .Validate() и .EndEdit().

1
ответ дан 30 November 2019 в 12:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: