我正在使用 VS 2008/C# 并将帮助程序类的本地列表绑定为 DataGridView 控件的数据源。在我的助手类列表上调用 Remove() 方法会触发 DataGridView 的 CellFormatting 事件,这是有道理的(有点)。
当删除网格中最后一行的 DataBoundItem 时(只要网格不止一行),DataGridView 的 Rows 集合在此事件触发之前不会更新。因此,在 CellFormatting 事件处理程序中,我得到一个 IndexOutOfRangeException,因为 Rows 集合太大了。
我尝试使用 DataGridView.Rows.Remove() 方法删除行,并使用 BindingSource 进行绑定,而不是将 List 直接绑定为数据源。
我通过 Google 找到了一些关于此事件的引用,但答案要么没有出现,要么据说在 DataGridView 或 DataGridView.Rows 集合上使用 Delete() 方法——目前都不存在。
排序似乎也不是问题,因为执行/不执行排序会导致相同的结果。
“最后一行”的唯一例外是删除问题是 DataGridView 是否只包含一行 - 在这种情况下一切正常。