将项目从一个列表框移动到另一个列表框

时间:2009-10-29 15:24:40

标签: c# winforms listbox

我想将项目从一个列表视图移动到另一个列表视图。将它们添加到第二个可以工作,但移动的条目根本不会被删除。

private void MoveSelItems(ListBox from, ListBox to)
    {
        for (int i = 0; i < from.SelectedItems.Count; i++)
        {
            to.Items.Add(from.SelectedItems[i].ToString());
        }

        from.Items.Remove(to.SelectedItem);
    }

我正在使用C#/ Winforms / -NET 3.5

4 个答案:

答案 0 :(得分:3)

在循环结束时尝试使用此代码

foreach ( var item in new ArrayList(from.SelectedItems) ) {
  from.Items.Remove(item);
}

答案 1 :(得分:2)

private void MoveSelItems(ListBox from, ListBox to)
{
    while (from.SelectedItems.Count > 0)
    {
        to.Items.Add(from.SelectedItem[0]);
        from.Items.Remove(from.SelectedItem[0]);
    }
}

答案 2 :(得分:1)

private void MoveSelItems(ListBox from, ListBox to)
    {
        for (int i = 0; i < from.SelectedItems.Count; i++)
        {
            to.Items.Add(from.SelectedItems[i].ToString());
            from.Items.Remove(from.SelectedItems[i]);
        }
    }

虽然

Items.RemoveAt(i)可能更快,如果重要的话。

您可能需要创建保留列表。

    //declare
    List<Object> items = new List<Object>();
    for (int i = 0; i < from.SelectedItems.Count; i++)
    {
        items.Add(from.SelectedItems[i]);
    }
    for (int i = 0; i < items.Count; i++)
    {
        to.Items.Add(items[i].ToString());
        from.Items.Remove(items[i]);
    }

答案 3 :(得分:1)

              for (int i = 0; i < ListBox3.Items.Count; i++)
               {
                    ListBox4.Items.Add(ListBox3.Items[i].Text);
                    ListBox3.Items.Remove(ListBox3.SelectedItem);

                }