当前位置:  开发笔记 > 编程语言 > 正文

ListBox.DataSource的奇怪问题

如何解决《ListBox.DataSource的奇怪问题》经验,为你挑选了1个好方法。

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

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

public class RootObject
{
   public List MySubObjects{ get; set;}
}

我的表单上有一个ListBox,还有一个属性"MyRootObject",显然它拥有一个RootObject.初始化控件时,我设置:

_listBox.DataSource = MyRootObject.MySubObjects;

现在,当表单加载时,我调试并看到正确设置了DataSource.但没有显示任何内容.我已经覆盖了SubObject的ToString()方法,甚至没有被调用.我尝试将_listBox.DisplayMember设置为SubObject的属性,只是为了查看是否存在某些问题,但仍然没有.我在设置DataSource后尝试调用_listBox.Update()和_listBox.Refresh(),但仍然没有爱.DataSource拥有所有数据......它只是拒绝显示它.

所以在调试时,我想知道WTF,我决定这样做

_listBox.DataSource = new List{ new SubObject(), new SubObject() };

果然,这很有效,我看到列表框中列出了两件事.

那么,真的很好奇,我决定尝试复制对象列表并将其放入列表框中,如下所示:

_listBox.DataSource = MyRootObject.MySubObjects.ToArray();

这有效!现在这是解决我的问题的方法......但是非常讨厌.有谁知道为什么我需要基本上复制像这样的对象列表才能使它工作,而不是只设置_listBox.DataSource = MyRootObject.MySubObjects; ?同样,DataSource在设置之后以任何一种方式拥有所有正确的数据...它只是在复制数据时,它实际显示,而当它不复制时,它不会显示.



1> Nat..:
((CurrencyManager)_listBox.BindingContext[_listBox.DataSource]).Refresh();

Sux0r我知道,但这很有效.(最初在这里找到答案)

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有