程序如下:
for(int i=listUpDoc.Items.Count-1;i>=0;i--)
{
    if(this.listUpDoc.Items[i].Selected==true)
      {
          this.listUpDoc.Items.RemoveAt(i);
      }
}请各位帮我看看什么原因??

解决方案 »

  1.   

    for (int i =this.lsbFolLabor.Items.Count-1 ;i>=0;i--)
    {
    if (this.lsbFolLabor.Items[i].Selected==true)
    {
    this.lsbFolLabor.Items.RemoveAt(i);
    }
    }程序沒有問題,和我寫法相同。
      

  2.   

    我调试过了啊,比如说我选择了第三项,然后点击删除.调试的时候第三项的selected不是等于true的.第一项的selected等于true了,结果就删除了第一项.
    不知道是什么原因啊???
      

  3.   

    你查看一下item对应的值
    直接取出选中的值及index看看
    若前面的没问题,后面删除也不会有问题
      

  4.   


    private void Page_Load(object sender, System.EventArgs e)
    {

    //你应该在让listbox的第一项赋予true值,所以每次回传的时候第一项都是真,第三项自然是假的了
    }
      

  5.   

    private void Page_Load(object sender, System.EventArgs e)
    {

    //你应该在这里让listbox的第一项赋予true值,所以每次回传的时候第一项都是真,第三项自然是假的了
    //把这里的代码放在
    //if (!this.IsPostBack)
    //{
    //}
    //中
    }
      

  6.   

    回dapanda(一天) 
    谢谢你的指点,但是Page_Load里的代码我是放在if(!Page.IsPostBack)里面的.
      

  7.   

    回hunter_32(曠野裡奔嘯的狼) 
    我的这段程序里没有涉及到调用数据库.
      

  8.   


    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
                 你的Page_Load处理程序
    } }
      

  9.   

    把初始化listUpDoc的代码放到
    if (!IsPostBack)中去。
      

  10.   

    for(int i=0;i<listUpDoc.Items.Count;i++)
    {
    if(this.listUpDoc.Items[i].Selected==true)
    {
    this.listUpDoc.Items.RemoveAt(i);
    }
    }
    用以上代码试一下
      

  11.   

    回 swordragon(古道热肠) 
    我已经把代码放在if (!IsPostBack)里面了,回 sunnystar365(一个人的天空) 你说的代码我也试过了,但是结果还是那样.
    郁闷ING.
      

  12.   

    是否把listbox的viewstate设置为false?
      

  13.   


    我的代码是放在Button_click事件里的,而且可以删除选中的,我已经做过测试的。
    楼主的代码是在什么地方执行的啊??
      

  14.   

    回dapanda(一天) 我没有把ViewState设置为false,回sunnystar365(一个人的天空),我的代码也是放在Button_click里面的
    我把Button_click里的代码都贴出来给大家看看private void btnRemove_Click(object sender, System.EventArgs e)
    {
         for(int i=listUpDoc.Items.Count-1;i>=0;i--)
         {
    if(this.listUpDoc.Items[i].Selected==true)
    {
        this.listUpDoc.Items.RemoveAt(i);  }
          }
    }
      

  15.   

    我的代码我刚才测试过的,是可以删除的啊。
    我是直接在ListBox中添加了几条记录,然后在BUTTON_Click中执行的啊,可以删除的啊。
    而且也不用设置任何属性啊,除了在ITEMS中添加了几条记录private void Button1_Click(object sender, System.EventArgs e)
    {
    for(int i=0;i<listUpDoc.Items.Count;i++)
    {
     if(this.listUpDoc.Items[i].Selected==true)
    {
    this.listUpDoc.Items.RemoveAt(i);
    }
    } }
      

  16.   

    楼主的Page_Load事件中有些什么代码啊??
      

  17.   

    我看是,第一项和其它项的Value值一样。就无法区分你选的是哪项!
      

  18.   

    我也很奇怪啊,郁闷至极啊!!
    我的Page_Load里面的程序如下if(!Page.IsPostBack)
    { GetNewsInfo(NewsID);
    }GetNewsInfo(NewsID);就是把数据绑定到listbox里去,
      

  19.   

    回 yangli_yl2004(杨李)
    我是根据索引里删除的,不是根据value
      

  20.   

    我在listbox里插入100个连续的数字,listbox设为可以多选,按钮的代码是这样的:
    for(int i=0;i<this.ListBox1.Items.Count;i++)
    {
    if(this.ListBox1.Items[i].Selected==true)
    {
    this.ListBox1.Items.RemoveAt(i);
    }
    }
    但多选,再按删除,不是删除我选中的全部,而是一部分,可以全部选中,再按删除,就只是删除双数的(2,4,6,8,10...),就留下单数的(1,3,5,7,9...),那是为什么呀?
      

  21.   

    ListBox.Items.RemoveAt(ListBox.SelectedIndex);
      

  22.   

    应该这样
    for (int i = 0; i < ListBox1.Items.Count; i++)
            {
                   ListBox1.Items.Remove(ListBox1.SelectedItem);
            } 
    因为remoeve以后Items里就少了一个
      

  23.   

    hunter_32(曠野裡奔嘯的狼) ( ) 信誉:100  2005-11-21 13:59:21  得分: 0   
       
    是不是你的sql語句有問題啊  
    这位强得不行了..........
     
      

  24.   

    错了错了
    应该这样
    while (ListBox1.SelectedIndex != -1)
            {
                ListBox1.Items.RemoveAt(ListBox1.SelectedIndex);
            }
      

  25.   

    在 ListBox 中,每一项都是一个 ListItem 对象,此对象有Text 和 Value 属性来保存值,
    有时间我们可能只会对每一项的 Text 属性进行赋值,而忽略了 Value 这个属性。在客户端发送的时候,只对 ListBox 件所选定的值(也就是选定项的 Value)值进行发送,
    然后ListBox请根据选定的值来判断是那一个项被选定了,但由于每一项的值都一样,所以比较第一项的时候条件就成立了,所以 ListBox 就会认为选定了第一项。解决方法就是为每一项的 Value 属性设置一个不同的值。