【问题标题】:Adding duplicated values to a BindingList将重复值添加到 BindingList
【发布时间】:2015-11-01 14:05:19
【问题描述】:

当我向 BindingList 添加信息时,它会重复...我不明白如何...

我有这个带有列表的课程:

public VideoRepository()
{
    videos = new BindingList<Video>();
    videosFiltered = new BindingList<Video>();
}

public BindingList<Video> videos { get; set; }
public BindingList<Video> videosFiltered { get; set; }

public void addVideo(Video video)
{
    Console.WriteLine("Size 1 " + videos.Count);
    videos.Add(video);
    videosFiltered.Add(video);
    Console.WriteLine("Size 2 " + videos.Count);
}

当我调用方法addVideo 时,第一个打印显示Size 1 0,第二个打印显示Size 2 2。即使使用调试器...

有什么问题?我喝醉了吗?

【问题讨论】:

  • 第一个打印在添加之前,第二个打印在添加之后
  • 是的,我戴了眼镜。我的列表是空的,所以第一次打印应该打印 0,因为它是,然后我添加一个对象到我的列表视频,所以我应该有 1 个对象,但它打印 2!
  • 之前的打印应该打印 0,列表是空的,第二次打印应该打印 1,我只添加一个对象到列表视频...但我得到 2??

标签: c# add bindinglist


【解决方案1】:

我注意到您的 videosvideosFiltered 都有公共设置器。获得所描述行为的唯一方法是某些外部代码(此处未显示)将它们设置为同一个 BindingList&lt;Video&gt; 实例。

您最好删除公共设置器。

或者,修改代码如下

public void addVideo(Video video)
{
    Console.WriteLine("Size 1 " + videos.Count);
    videos.Add(video);
    if (videosFiltered != videos)
        videosFiltered.Add(video);
    Console.WriteLine("Size 2 " + videos.Count);
}

【讨论】:

  • 是的,你是对的,当我看到你的代码时,我注意到了你的 if 条件,然后我想起了另一种方法,我想将对象从一个列表复制到另一个,我使用了 videosFiltered = videos,但没有评论...这是我的问题。感谢您的帮助。
猜你喜欢
  • 2021-11-25
  • 2023-04-06
  • 2014-08-07
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多