如何将多个选定的项目从一个列表框移动到另一个列表框?

3
我有两个名为listBox1listBox2的列表框,两个列表框中都有4个项(字符串)。我可以从这两个列表框中选择多个项。我还有两个按钮。

点击button1后,我需要将从listBox1中选择的多个项移动到listBox2中。同样地,点击button2后,我需要将从listBox2中选择的多个项移动到listBox1中。

怎么做呢?

7个回答

5
private void MoveListBoxItems(ListBox source, ListBox destination)
{        
    ListBox.SelectedObjectCollection sourceItems = source.SelectedItems;
    foreach (var item in sourceItems)
    {
        destination.Items.Add(item);
    }
    while (source.SelectedItems.Count > 0)
    {
        source.Items.Remove(source.SelectedItems[0]);
    }
}

使用方法: 在你从1到2的按钮上的点击事件中:

MoveListBoxItems(listBox1, listBox2);

移回它们的方法如下:
MoveListBoxItems(listBox2, listBox1);

2
一个 ListBox 具有一个SelectedItems属性,您可以在单击事件处理程序中使用它来复制项目。像这样:
foreach(var item in listBox1.SelectedItems)
{
    listBox2.Items.Add(item);
}

2
private void Move(ListControl source, ListControl destination)
{
       List<ListItem> remove = new List<ListItem>();
       foreach(var item in source.Items)
       {
            if(item.Selected == false) continue;
            destination.Items.Add(item);
            remove.Add(item);
       }
       foreach(var item in remove)
       {
            source.Items.Remove(item);
       }
}

那么你可以像这样调用它。
Move(listbox1, listbox2);
//or
Move(listbox2, listbox1);

listcontrol没有Items属性。将其更改为listbox。 - nawfal

2
根据这个问题如何在ListBox中移除多个选定的项目?
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);
    } 
} 

你可以像这样做。

1
private void button1_Click(object sender, EventArgs e)
  {
       foreach (var item in listBox1.SelectedItems)
        {
            listBox2.Items.Add(item);
        }
        for (int s = 0; s < listBox1.Items.Count; s++)
        {
            for (int t = 0; t < listBox2.Items.Count; t++)
            {
                if (listBox1.Items[s].ToString().Equals(listBox2.Items[t].ToString()))
                {
                    listBox1.Items.RemoveAt(s);
                }
            }
        }
  }

0
private void move(ListBox source, ListBox destination) {
    for (int i = 0; i <= source.Items.Count-1; i++)
        {
           destination.Items.Add(source.Items[i]);
        }
    source.Items.Clear(); 
}

0
    private void Btn_Right_Click(object sender, EventArgs e)
    {

        while(ListBox_Left.SelectedItems.Count!=0)
        {
            ListBox_Right.Items.Add(ListBox_Left.SelectedItem);
            ListBox_Left.Items.Remove(ListBox_Left.SelectedItem);
        }
    }

    private void Btn_Left_Click(object sender, EventArgs e)
    {
        while (ListBox_Right.SelectedItems.Count != 0)
        {
            ListBox_Left.Items.Add(ListBox_Right.SelectedItem);
            ListBox_Right.Items.Remove(ListBox_Right.SelectedItem);
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接