Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法将列表框的选定项目传输到另一个列表框_C#_Asp.net_.net_Listbox - Fatal编程技术网

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循环。这将允许直接从列表框中删除,并且不需要第二个循环。