我有一个对象的List,设置为BindingSource的DataSource,设置为DataGridView的DataSource . 然后我添加了一个DataGridViewButtonColumn,我想要点击一下从集合中删除该记录 . 所以我只是从DataGridView CellClick事件中调用collection.RemoveAt(e.rowIndex) . 但是这会产生IndexOutOfRange异常; “1没有 Value ”..
那么这里发生了什么?我可能有一个模糊的想法,但想要确切地了解哪些事件失败等等 . 我需要做些什么来正确执行此操作?
EDIT: 如果我使用BindingList,这似乎不会发生..但是当使用List时,我遇到了这个问题..
1 回答
你're seeing the error is because you'最终绑定到
List
的原因 .List
不包含DataGridView需要接收的更改通知,以反映您所做的更改 .如果您真的想解决这个问题,可以执行以下操作:在对
List
进行更改之前,将BindingSource的DataSource属性设置为Nothing
. 完成更改后,将List
重置为DataSource .这是一个非常难看的解决方案,你可以想象 . 您要做的事情是绑定到实现
IBindingList
的对象,无论是您创建的自定义集合还是BindingList .以下是进一步调查此问题的合理起点:
DataGridView Control Overview (Windows Forms)