Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当基础集合';s计数==0_C#_.net 3.5_Binding - Fatal编程技术网

C# 当基础集合';s计数==0

C# 当基础集合';s计数==0,c#,.net-3.5,binding,C#,.net 3.5,Binding,我遇到了BindingSource的一个奇怪行为。首先,我在designer中将它的DataSource设置为UI用于绑定的类型,但是当我随后检索数据时,我将DataSource设置为这种类型的集合。当集合实际存储某些对象时,一切正常。当它是空的(不是空的,只是空的)时,问题就开始了。BindingSource将被挂起,即使向集合中添加某些内容也不会改变它,ResumeBinding也没有效果。在这种状态下,它是完全无用的 我发现了一种解决方法,它只是简单地将数据源设置为null,然后设置为同一

我遇到了BindingSource的一个奇怪行为。首先,我在designer中将它的DataSource设置为UI用于绑定的类型,但是当我随后检索数据时,我将DataSource设置为这种类型的集合。当集合实际存储某些对象时,一切正常。当它是空的(不是空的,只是空的)时,问题就开始了。BindingSource将被挂起,即使向集合中添加某些内容也不会改变它,ResumeBinding也没有效果。在这种状态下,它是完全无用的


我发现了一种解决方法,它只是简单地将数据源设置为null,然后设置为同一个集合,但这次添加了元素(如果没有设置为null,则不起作用)。有人能给我解释一下吗?BindingSource为什么会有这种行为?当然,有没有优雅的方法来解决这个问题?我不喜欢我找到的解决方案。

Collection
不支持列表通知,因此它无法告诉用户界面进行更新或执行任何有用的操作。更改为
BindingList
而不是
Collection
应该可以解决此问题。

我已通过添加新项目解决了此问题,使用以下代码:

myBindingsurce.Add(myObject);
而不是

myCollectoin.Add(myObject);
当数据源(我使用了一个列表类)为空时,我也遇到了同样的问题。IsBindingSuspended已设置为true


希望这对您有所帮助。

您在运行时使用的底层数据源是什么?这很重要…这是一个收藏,我在我的帖子里写的。它包含的类型是我的类,数据模型的一部分;还有收藏!=<代码>收藏。我不想在这里做任何假设,但是当集合中有一些对象时,一切都很好。只有当绑定集合以0个元素开始时,问题才会出现。然后BindingSource.IsBindingSuspended为true,即使ResumeBinding()也不会更改它。我不能使用BindingList,它不是我的私人项目,策略是使用Collection(对我们有效)。@CodeMonkey-您的对象是否有可访问的公共无参数构造函数?如果没有,它能做什么?它无法添加,它没有什么可显示的,它也无法知道何时添加了任何内容。。。它能做些什么?