List<object> list_清空 = new List<object>();  //创建一个集合,用来装没有选中的
foreach (var c in listBox4.Items)
            {
                if (c != listBox4.SelectedItem)
                {
                    list_清空.Add(c);  //把没有选定的项,加进集合
                }
            }
foreach (var c in list_清空)
            {
                listBox4.Items.Remove(c);  //执行删除此项     
            }结果我用Ctrl键选定多项,结果怎么最后只留下一项呢,有些选定了的,也删了

解决方案 »

  1.   

    List<object> list_清空 = new List<object>(); //创建一个集合,用来装没有选中的
    foreach (var c in listBox4.Items)
      {
      if (c != listBox4.SelectedItem)  {
      list_清空.Add(c); //把没有选定的项,加进集合
      }
      }
    foreach (var c in list_清空)
      {
      listBox4.Items.Remove(c); //执行删除此项   
      }这里应该有问题吧,你都说多选择了,能这样比吗
      

  2.   

    奇怪,怎么会报错呢
     foreach (var c in listBox4.Items)
           {
               if (!listBox4.SelectedItems.Contains(c))
                    {
                        list_清空.Add(c);
                  }
          }
    但这样不报错
                foreach (var c in listBox4.Items)
                {
                    if (c != listBox4.SelectedItem
                      {
                        list_清空.Add(c);
                    }
                }上面那个为什么报错呢:说枚举列表发生了改变,两段都改变了的啊
      

  3.   

       for (int i = listBox4.SelectedIndices.Count - 1; i > -1; i--)
                {
                    listBox4.Items.RemoveAt(listBox4.SelectedIndices[i]);
                }这个就可以实现了!没必要弄的那么复杂。
      

  4.   

     List<object> list_清空 = new List<object>(); //创建一个集合,用来装没有选中的
                for (int i = 0; i < this.listBox1.Items.Count; i++)
                {
                    
               
                   
                    if (!this.listBox1.SelectedIndices.Contains(i))
                    {
                        list_清空.Add(this.listBox1.Items[i]); //把没有选定的项,加进集合
                    }
                            }
                    
                foreach (var c in list_清空)
                {
                  
                   
                         listBox1.Items.Remove(c);
                   
                   
                   
                    //执行删除 此项   
                }
      

  5.   

    List<object> list_清空 = new List<object>(); //创建一个集合,用来装没有选中的
      for (int i = 0; i < this.listBox1.Items.Count; i++)
      {
        
        
        
      if (!this.listBox1.SelectedIndices.Contains(i))
      {
      list_清空.Add(this.listBox1.Items[i]); //把没有选定的项,加进集合
      }
          }
            
      foreach (var c in list_清空)
      {
        
        
      listBox1.Items.Remove(c);
        
        
        
      //执行删除 此项   
      }
      

  6.   

        protected void Button1_Click(object sender, EventArgs e)
        {
            List<ListItem> list = new List<ListItem>();
            for (int i = 0; i < ListBox1.Items.Count; i++)
            {
                if (!ListBox1.Items[i].Selected)
                    list.Add(ListBox1.Items[i]);
            }
            foreach (ListItem item in list)
                ListBox1.Items.Remove(item);
        }