我有datagridview,DataSource设置为myBindingList . 列表项目实现INotifyPropertyChanged,因此datagridview自动响应列表中的更改 .
现在我必须计算一些datagridview列的摘要 .
它应该在以下时间完成:
-
数据源更改(OnDataSourceChanged)
-
单元格值更改(OnCellValueChanged)
第一个很清楚,但第二个问题我遇到了一个小问题 .
当用户通过控制或更改时更改单元格的值时,将触发OnCellValueChanged:
myDataGridView.Rows[x].Cells[y].Value=newValue;
但是关于:
myBindingList[myInvoice].Property1=newValue;
DataGridView会自动刷新(INotifyPropertyChanged),但它不会触发OnCellValueChanged事件 .
知道如何从我的DataGridView获取此类信息?它必须在DataGridView级别上完成,因为我正在编写自己的控件,扩展了dgv .
谢谢您的帮助 .
1 回答
我能想到的最接近的解决方法是使用BindingSource作为数据源,然后在自定义DataGridView中引发自己的事件以响应BindingSource ListChanged事件 .
我可能会覆盖OnDataSourceChanged这样的东西:
这样做的问题是,我无法(我能想到)获得正确的单元属性,因此您必须重新评估所有列,而不仅仅是包含更改的列 .