DataGridView связан с вопросом объекта iNotifyPropertyChanged

59
7

У меня есть производный DataGridView, привязанный к BindingList, и объект реализует iNotifyPropertyChanged.


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


В принципе, я хочу добавить свой СОБСТВЕННЫЙ ответ к событию PropertyChanged. К сожалению, я не могу найти, где hook\handle предназначен для того, чтобы событие подписалось на него самостоятельно.


Спасибо заранее!


Edit:

Решение, которое я выбрал, было гибридом между двумя верхними ответами. Я закончил подписку на событие ListAdded\Changed и смог получить достаточно контекста оттуда, чтобы обновить все мои функции.

спросил(а) 2010-06-23T22:18:00+04:00 10 лет, 5 месяцев назад
1
Решение
58

Я думаю, вы хотите обработать событие BindingSource.CurrentItemChanged.

ответил(а) 2010-06-23T22:25:00+04:00 10 лет, 5 месяцев назад
59

Вы должны переопределить следующие методы:
OnDataMemberChanged http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.ondatamemberchanged.aspx
OnDataSourceChanged http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.ondatasourcechanged.aspx

Внутри этих методов вы должны использовать класс ListBindingHelper http://msdn.microsoft.com/en-us/library/system.windows.forms.listbindinghelper.aspx и его метод GetList для получения фактического объекта, который представляет список, связанный с вашим DataGridView. Вы должны попробовать передать его в IBindingList, и если вы используете .NET FW 3.5 или выше, в интерфейс INotifyCollectionChanged и подписаться на соответствующие события.

ответил(а) 2010-06-23T22:31:00+04:00 10 лет, 5 месяцев назад
59

В BindingList просмотрите событие ListChanged.

Изменить: http://msdn.microsoft.com/en-us/library/ms132742.aspx говорит, что событие происходит "когда список или элемент в списке изменяется" (т.е. когда Событие PropertyChanged объекта в списке запущено).

ответил(а) 2010-06-23T22:22:00+04:00 10 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема