Vb.net 从DataGridView中删除绑定项

Vb.net 从DataGridView中删除绑定项,vb.net,data-binding,datagridview,Vb.net,Data Binding,Datagridview,我有一个对象列表,设置为BindingSource的DataSource,设置为DataGridView的DataSource。然后,我添加了一个DataGridViewButton列,我希望单击该列可以从集合中删除该记录。因此,我只需从DataGridView CellClick事件调用collection.RemoveAt(e.rowIndex)。然而,这会产生IndexOutfrange异常;“1没有值” 这里发生了什么?我可能有一个模糊的想法,但想确切地了解哪些事件失败等等。。我需要做什

我有一个对象列表,设置为BindingSource的DataSource,设置为DataGridView的DataSource。然后,我添加了一个DataGridViewButton列,我希望单击该列可以从集合中删除该记录。因此,我只需从DataGridView CellClick事件调用collection.RemoveAt(e.rowIndex)。然而,这会产生IndexOutfrange异常;“1没有值”

这里发生了什么?我可能有一个模糊的想法,但想确切地了解哪些事件失败等等。。我需要做什么才能正确执行此操作

编辑:
如果我使用BindingList,这似乎不会发生。。但是当使用列表时,我遇到了这个问题。

您看到错误的原因是因为您最终绑定到了
列表<代码>列表
不包括DataGridView需要接收的更改通知,以反映您所做的更改

如果确实想解决此问题,可以执行以下操作:在更改
列表之前,将BindingSource的DataSource属性设置为
Nothing
。完成更改后,将
列表重置为数据源

你可以想象,这是一个相当丑陋的解决方案。要执行此操作,请绑定到实现
IBindingList
的对象,该对象可以是您创建的自定义集合,也可以是一个

以下是进一步调查这一问题的合理起点: