小编Jus*_*ury的帖子

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

当我尝试删除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成功删除最后一个项目后才会抛出异常.它被外部代码抛出,所以我无法准确地告诉它究竟是什么抛出它.

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

提前谢谢,贾斯汀

c# data-binding bindinglist bindingsource winforms

6
推荐指数
1
解决办法
2616
查看次数

这是处理类库中数据处理进度显示的好方法吗?

我开发了一个C#类库,它们的一些方法显示了它的处理进度信息,因为它们读写了数百万条记录,并且用户要求了解进程的进展情况以及它们应该等待的时间.

如果WPF应用程序显示进度条,则使用依赖注入来避免"如果控制台应用程序在控制台上写入进度",(1)如果从控制台调用该方法,我在控制台上显示处理每一百万条记录的时间应用程序和(2)如果从WPF应用程序调用该方法,我在GUI上显示进度条.

这里的问题是,这是一个很好的做法,我正在做什么,或者有更好/正确的替代方案吗?

我最诚挚的问候.

c# dependency-injection

3
推荐指数
2
解决办法
237
查看次数