gpt4 book ai didi

forms - ListBox.DataSource的奇怪问题

转载 作者:行者123 更新时间:2023-12-04 04:14:21 25 4
gpt4 key购买 nike

我正在编写Windows应用程序并使用Listbox控件。我正在使用Visual Studio C#2008 Express Edition开发。

我有一个看起来像这样的数据对象

public class RootObject
{
public List<SubObject> MySubObjects{ get; set;}
}

我的表单上有一个ListBox,还有一个属性“MyRootObject”,它显然拥有一个RootObject。控件初始化后,我设置:
_listBox.DataSource = MyRootObject.MySubObjects;

现在,在加载表单时,我调试并看到正确设置了数据源。但是什么也不显示。我已经重写了SubObject的ToString()方法,甚至没有调用它。我尝试将_listBox.DisplayMember设置为SubObject的属性,只是为了查看那里是否存在问题,但仍然没有任何问题。设置数据源后,我尝试调用_listBox.Update()和_listBox.Refresh(),但仍然不满意。数据源具有所有数据……只是拒绝显示它。

因此,在调试时,我想知道WTF和我决定只是做
_listBox.DataSource = new List<SubObject>{ new SubObject(), new SubObject() };

果然,这行得通,并且我在列表框中看到了两件事。

因此,真的很好奇,我决定尝试复制对象列表并将其放入列表框中,如下所示:
_listBox.DataSource = MyRootObject.MySubObjects.ToArray();

这行得通!现在,这是解决我的问题的解决方法,但是很烦人。有谁知道为什么我需要基本上复制这样的对象列表才能使其正常工作,而不是仅仅设置_listBox.DataSource = MyRootObject.MySubObjects ;? ?同样,DataSource在设置数据后,无论哪种方式都拥有正确的数据……它只是在复制数据时才真正显示,而在不复制时就不显示。

最佳答案

((CurrencyManager)_listBox.BindingContext[_listBox.DataSource]).Refresh();

我知道Sux0r,但这行得通。
(最初找到的答案 here)

关于forms - ListBox.DataSource的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com