我有一个绑定到BindingList的派生DataGridView,该对象实现了iNotifyPropertyChanged。
我想执行以下操作:当我的DataGridView附加的属性发生更改时,我想调用一个函数来更新我的一个列的标题。
基本上,我想将我的OWN响应添加到PropertyChanged事件中。不幸的是,我无法找到钩子\句柄的位置,以便事件自己订阅它。
提前致谢!
编辑:
我采取的解决方案是前两个答案之间的混合。我最终订阅了ListAdded \ Changed事件,并且能够从那里获得足够的上下文来更新我的所有功能。
答案 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接口,并订阅相应的事件。