首页 文章

从DataGridView中删除绑定项

提问于
浏览
0

我有一个对象的List,设置为BindingSource的DataSource,设置为DataGridView的DataSource . 然后我添加了一个DataGridViewButtonColumn,我想要点击一下从集合中删除该记录 . 所以我只是从DataGridView CellClick事件中调用collection.RemoveAt(e.rowIndex) . 但是这会产生IndexOutOfRange异常; “1没有 Value ”..

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

EDIT: 如果我使用BindingList,这似乎不会发生..但是当使用List时,我遇到了这个问题..

1 回答

  • 1

    你're seeing the error is because you'最终绑定到 List 的原因 . List 不包含DataGridView需要接收的更改通知,以反映您所做的更改 .

    如果您真的想解决这个问题,可以执行以下操作:在对 List 进行更改之前,将BindingSource的DataSource属性设置为 Nothing . 完成更改后,将 List 重置为DataSource .

    这是一个非常难看的解决方案,你可以想象 . 您要做的事情是绑定到实现 IBindingList 的对象,无论是您创建的自定义集合还是BindingList .

    以下是进一步调查此问题的合理起点:
    DataGridView Control Overview (Windows Forms)

相关问题