关于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不会修改成功。