C# 无法将列表框的选定项目传输到另一个列表框
我无法将所选项目从一个列表框转移到另一个列表框:C# 无法将列表框的选定项目传输到另一个列表框,c#,asp.net,.net,listbox,C#,Asp.net,.net,Listbox,我无法将所选项目从一个列表框转移到另一个列表框: protected void Button2_Click(object sender, EventArgs e) { foreach (ListItem li in ListBox2.Items) { if (li.Selected) { ListItem liNew = new ListItem(li.Text, li.Va
protected void Button2_Click(object sender, EventArgs e)
{
foreach (ListItem li in ListBox2.Items)
{
if (li.Selected)
{
ListItem liNew = new ListItem(li.Text, li.Value);
ListBox1.Items.Add(liNew);
ListBox2.Items.Remove(liNew);
}
}
}
我得到一个例外:
System.InvalidOperationException:集合已修改;枚举操作不能执行
问题是在迭代集合时无法从集合中删除元素。相反,您可以选择所选的项目:)并在其上循环
foreach(ListItem li in ListBox2.Items.Where(x => x.Selected)) {
ListItem liNew = new ListItem(li.Text, li.Value);
ListBox1.Items.Add(liNew);
ListBox2.Items.Remove(li);
}
(另外,我想你指的是li
,而不是liNew
)
如果没有LINQ,它可能看起来像:
List<ListItem> toRemove = new List<ListItem>();
foreach(ListItem li in ListBox2.Items) {
if(li.Selected) {
ListItem liNew = new ListItem(li.Text, li.Value);
ListBox1.Items.Add(liNew);
toRemove.Add(li);
}
}
foreach(ListItem li in toRemove) {
ListBox2.Items.Remove(li);
}
问题是在迭代集合时无法从集合中删除元素。相反,您可以选择所选的项目:)并在其上循环
foreach(ListItem li in ListBox2.Items.Where(x => x.Selected)) {
ListItem liNew = new ListItem(li.Text, li.Value);
ListBox1.Items.Add(liNew);
ListBox2.Items.Remove(li);
}
(另外,我想你指的是li
,而不是liNew
)
如果没有LINQ,它可能看起来像:
List<ListItem> toRemove = new List<ListItem>();
foreach(ListItem li in ListBox2.Items) {
if(li.Selected) {
ListItem liNew = new ListItem(li.Text, li.Value);
ListBox1.Items.Add(liNew);
toRemove.Add(li);
}
}
foreach(ListItem li in toRemove) {
ListBox2.Items.Remove(li);
}
那么,在将项目移动到另一个项目之后,如何删除它们呢listbox@minitech我建议(对于非LINQ示例)使用反向for循环。这将允许直接从列表框中删除,并且不需要第二个循环。那么,如何在将项目移动到另一个列表框后删除它们listbox@minitech我建议(对于非LINQ示例)使用反向for循环。这将允许直接从列表框中删除,并且不需要第二个循环。