首页 文章

如何删除ListBox中的多个选定项?

提问于
浏览
6

我的Windows窗体包含两个列表框 . Listbox1中包含一些项目,listbox2为空 . 当我按下表单上的按钮时,应从Listbox1中删除listbox1中的多个选定项目并将其复制到Listbox2 .

我尝试使用listbox1.SelectedItems上的foreach循环,但它只从列表中删除了1个项目 .

任何人都有解决方案或代码吗?

6 回答

  • 0

    你可以在一个循环中完成所有操作 . 你应该在SelectedIndices上使用一个简单的for和loop向后循环:

    private void button1_Click(object sender, EventArgs e) 
    { 
        for(int x = listBox1.SelectedIndices.Count - 1; x>= 0; x--)
        { 
            int idx = listBox1.SelectedIndices[x];
            listBox2.Items.Add(listBox1.Items[idx]); 
            listBox1.Items.RemoveAt(idx);
        } 
    }
    
  • 2

    你必须存储值,你想在其他地方删除,然后从列表中删除它们,这是示例代码:

    private void button1_Click(object sender, EventArgs e)
    {
        ArrayList tmpArr = new ArrayList();
        foreach (object obj in listBox1.SelectedItems)
        {
            listBox2.Items.Add(obj);
            tmpArr.Add(obj);
        }
        foreach (object obj in tmpArr.ToArray())
        {
            listBox1.Items.Remove(obj);
        }
    }
    
  • 19

    我这样做是使用CopyTo方法将项目复制到数组所选项目的计数长度,然后循环该数组从ListBox1中删除每个相应的项目 .

    private void button1_Click(object sender, EventArgs e)
     {
         object[] itemsToRemove = new object[listBox1.SelectedItems.Count];
         listBox1.SelectedItems.CopyTo(itemsToRemove, 0);
    
         foreach (object item in itemsToRemove)
         {
             listBox1.Items.Remove(item);
             listBox2.Items.Add(item);
         }
     }
    
  • 0

    对于VS2005我用户类似于我无法使用的东西.selectedIndices

    for (int i = ListBox1.Items.Count - 1; i >= 0; i--)
            {
                    if (ListBox1.Items[i].Selected)
                    {
                        ListBox2.Items.Add(ListBox1.Items[i]);
                        ListBox1.Items.Remove(ListBox1.Items[i]);
                    }
    
            }
    
  • 2
    for (int x = listBox1.SelectedIndices.Count - 1; x >= 0; x--)
            {
                int var = listBox1.SelectedIndices[x];
                listBox1.Items.RemoveAt(var);
    
            }
    

    其作品 .

  • 0

    这是我的方法:

    List<String> arr = new List<string>();
        private void btnAdd_Click(object sender, EventArgs e)
        {
            arr.Add(txtItem.Text);
            lstItem.DataSource = arr.ToArray();
            txtItem.Focus();
        }
    //When i delete
        private void btnRemove_Click(object sender, EventArgs e)
        {
    
            foreach (string item in lstItem.SelectedItems)
            {
                arr.Remove(item);
            }
            lstItem.DataSource = arr.ToArray();
    
         }
    

相关问题