日期:2014-05-18  浏览次数:20878 次

关于ArrayList和listbox的问题
首先定义了一个ArrayList
ArrayList   List   =   new   ArrayList();

先存了三个数
List.Add( "57607 ");
List.Add( "57608 ");
List.Add( "57609 ");

接着在listbox里显示
this.listBox1.DataSource   =   List;
显示正确

再释放
List.Clear();

再重新存入两个数
List.Add( "57617 ");
List.Add( "57618 ");

再在listbox里显示
this.listBox1.DataSource   =   List;
结果listbox里没有反应,还是原来的那三个数,晕。

是什么原因那,前辈指点下吧,谢谢^_^

------解决方案--------------------
如果是ListBox控件DataSource用下边这样就可以了,有没有更好的我还不知道。

首先应该知道“设置了 DataSource 属性之后,用户不能修改项集合”


再在listbox里显示
this.listBox1.DataSource = List;
修正成下边的样子就可以了。
this.listBox1.DataSource = Noghing;
this.listBox1.DataSource = List;

----------
我用VB
------解决方案--------------------
this.listBox1.DataBind();
------解决方案--------------------
应该重新绑定吧。
------解决方案--------------------
重新绑以下!!!!
------解决方案--------------------
ArrayList List = new ArrayList(); 要放到全局变量

你看看你的删除,复制,还有帮定的位置
------解决方案--------------------
this.listBox1.DataSource = null;
this.listBox1.DataSource = List;
试试看

------解决方案--------------------
因为即使你对List进行了元素的添加,但是如下的表达式还是为True:

this.listBox1.DataSource == List,
所以
this.listBox1.DataSource = List相当于没有设置。

可以使用如下的方法来修改:
ArrayList list =new ArrayList();
list.AddRange(List);
list.Add( "57617 ");
list.Add( "57618 ");
this.listBox1.DataSource = list;


原因就在于在给listBox1的DataSource赋值的时候系统判断了是否当前的值和要赋值的是否“相等”,而这个相等正好默认的是引用相等,所以使用同一个ArrayList不会修改成功。