DataGridView связан с вопросом объекта iNotifyPropertyChanged - PullRequest
1 голос
/ 23 июня 2010

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

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

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

Заранее спасибо!

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

Ответы [ 3 ]

1 голос
/ 23 июня 2010

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

1 голос
/ 23 июня 2010

Вы должны переопределить следующие методы: 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 и подписаться на соответствующие события.

1 голос
/ 23 июня 2010

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

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

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