删除列表中的最后一项时,数据绑定上的InvalidOperationException

Jus*_*ury 6 c# data-binding bindinglist bindingsource winforms

当我尝试删除datagridview中的最后一项时,我收到以下消息.

DataBinding在列表中找不到适合所有绑定的行.

我的绑定设置如下.

ExtendedBindingList<MyClass> bl = new ExtendedBindingList<MyClass>(GetDataFromDB());
BindingSource bs = new BindingSource();
bs.DataSource = bl;
dgv.DataSource = bs;
Run Code Online (Sandbox Code Playgroud)

ExtendedBindingList只是简单的东西,我把它们放在一起实现排序和过滤以及一些基本的状态持久性.dgv是DataGridView.GetDataFromDB返回MyClass的List.

只有在我尝试使用以下方法从datagridview中删除最后一项时才会出现此问题:

bs.RemoveCurrent();
Run Code Online (Sandbox Code Playgroud)

其他所有时间都有效.我唯一提示解决方案是删除所有绑定并重新应用它们,但这似乎不是一个理想的解决方案.

编辑 只有在BindingList成功删除最后一个项目后才会抛出异常.它被外部代码抛出,所以我无法准确地告诉它究竟是什么抛出它.

所以,我在这里,请求一些帮助:).

提前谢谢,贾斯汀

nig*_*der 0

以下是我从网格中删除选定行的方法:

private void btnDelete_Click(object sender, EventArgs e)
{
  if (grid.CurrentRow == null) return;
  var selectedItem = grid.CurrentRow.DataBoundItem as PartGroup;
  if (selectedItem != null && 
    UIHelper.ShowQuestion("Are you sure you want to delete selected row?") == System.Windows.Forms.DialogResult.Yes)
  {
    groups.Remove(selectedItem);
  }
}
Run Code Online (Sandbox Code Playgroud)

groups 是我的 BindingListEx(Of T)。

希望能帮助到你。