将一个ARRAYLIST帮定到LISTBOX上listBox1.DataSource = arrayList1;由于ListBox不能自动更新数据源,所以要删除一个Item的话就必须arrayList1.RemoveAt(listBox1.SelectedIndex);
listBox1.DataSource = null;
listBox1.DataSource = arrayList1;如果删除arrayList1中的最后一项(如果不是最后一项的话就一切正常),当再次选择listBox1中的Item时,系统就会抱出如下错误未处理的“System.ArgumentOutOfRangeException”类型的异常出现在 mscorlib.dll 中。其他信息: 指定的参数已超出有效值的范围。请问是什么原因?如何解决?

解决方案 »

  1.   

    就是说你删除了数据源的最后一个,在绑定listBox1的时候还是用原来的情况,但是listBox1的最后一个Item就没有数据可以绑定了。
      

  2.   

    数据源更新以后需要重新绑定一下
    listBox1.DataSource = arrayList1;
    listBox1.DataBind();
      

  3.   

    1楼的大哥,那这个问题怎么解决呀???
    2楼的大哥,是写ASP.NET的吧,ListBox根本没有DataBind()这个方法。
      

  4.   


    用你这种办法重新绑定也可以啊
    listBox1.DataSource = null;
    listBox1.DataSource = arrayList1;
      

  5.   

    解决了
    如果删除的是最后一个的话就需要先把ListBox的SelectedIndex值设成-1就OK了。int delIndex = listBox2.SelectedIndex;
    if ( listBox2.SelectedIndex == listBox2.Items.Count - 1 )
    listBox2.SelectedIndex = -1;
    if ( delIndex >= 0 && delIndex < exc.Count )
    ((IList)exc).RemoveAt(delIndex);
    listBox2.DataSource = null;
    if ( exc.Count > 0 )
    listBox2.DataSource = exc;
      

  6.   

    要不你在
    listBox1.DataSource = null;
    后面再加一句
    listBox1.Items.Clear();试试?