DataGridView绑定了iNotifyPropertyChanged对象问题

时间:2010-06-23 19:18:42

标签: c# .net data-binding forms datagridview

我有一个绑定到BindingList的派生DataGridView,该对象实现了iNotifyPropertyChanged。

我想执行以下操作:当我的DataGridView附加的属性发生更改时,我想调用一个函数来更新我的一个列的标题。

基本上,我想将我的OWN响应添加到PropertyChanged事件中。不幸的是,我无法找到钩子\句柄的位置,以便事件自己订阅它。

提前致谢!

编辑:
我采取的解决方案是前两个答案之间的混合。我最终订阅了ListAdded \ Changed事件,并且能够从那里获得足够的上下文来更新我的所有功能。

3 个答案:

答案 0 :(得分:1)

在BindingList上,查看ListChanged事件。

编辑:http://msdn.microsoft.com/en-us/library/ms132742.aspx表示事件发生在“当列表或列表中的项目发生更改时”(即,当列表中的对象的PropertyChanged事件被触发时)。

答案 1 :(得分:1)

我认为你想要处理BindingSource.CurrentItemChanged事件。

答案 2 :(得分:1)

您应该覆盖以下方法: 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接口,并订阅相应的事件。