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

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

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

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

 foreach ( var item in new ArrayList(from.SelectedItems) ) { from.Items.Remove(item); } 
 private void MoveSelItems(ListBox from, ListBox to) { while (from.SelectedItems.Count > 0) { to.Items.Add(from.SelectedItem[0]); from.Items.Remove(from.SelectedItem[0]); } } 
 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 items = new List(); 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]); } 
  for (int i = 0; i < ListBox3.Items.Count; i++) { ListBox4.Items.Add(ListBox3.Items[i].Text); ListBox3.Items.Remove(ListBox3.SelectedItem); }