【问题标题】:During Deleting the Listbox item Collection was modified; enumeration operation may not execute在删除列表框项目期间,集合被修改;枚举操作可能无法执行
【发布时间】:2014-02-12 11:29:10
【问题描述】:

如上图所示,我必须将一个项目从一个列表框移动到另一个列表框。

  • > 按钮将一个或多个选定项从 listbox1 移动到 listbox2
  • >> 按钮将所有项目从 listbox1 移动到 listbox2
  • 我还有一个重置按钮来清除 listbox2

现在当我单击

protected void btn1_Click(object sender, EventArgs e)
    {
        lbltext.Visible = false;
        if (lstBoxAreaOfResponsibility.SelectedIndex >= 0)
        {
            foreach (ListItem Item in lstBoxAreaOfResponsibility.Items)
            {
                if (Item.Selected == true)
                {
                    lstBoxAreaOfResponsibility2.Items.Add(Item);
                }
            }
        }
        else
        {
            lbltext.Visible = true;
            lbltext.Text = "Please select atleast one in Area Of Responsibility to move";
        }
    }

    protected void btn2_Click(object sender, EventArgs e)
    {
        lbltxt.Visible = false;
        if (lstBoxAreaOfResponsibility.Items.Count != 0)
        {
            foreach (ListItem Item in lstBoxAreaOfResponsibility.Items)
            {
                lstBoxAreaOfResponsibility2.Items.Add(Item);
            }
        }
        else
        {
            lbltext.Visible = true;
            lbltext.Text = "There Is no Item In ListBox 1 to Move";
        }
    }

    protected void btn3_Click(object sender, EventArgs e)
    {
        lbltext.Visible = false;
        if (lstBoxAreaOfResponsibility2.Items.Count != 0)
        {
            foreach (ListItem Item in lstBoxAreaOfResponsibility2.Items)
            {
                lstBoxAreaOfResponsibility2.Items.Remove(Item);
            }
        }
        else
        {
            lbltext.Visible = true;
            lbltext.Text = "There Is No Item To Move";
        }
    }

    protected void btn4_Click(object sender, EventArgs e)
    {
        lbltext.Visible = false;
        if (lstBoxAreaOfResponsibility2.SelectedIndex >= 0)
        {
            foreach (ListItem Item in lstBoxAreaOfResponsibility2.Items)
            {
                if (Item.Selected == true)
                {
                    lstBoxAreaOfResponsibility2.Items.Remove(Item);
                }
            }
        }
        else
        {
            lbltext.Visible = true;
            lbltext.Text = "Please select atleast one in Listbox2 to move";
        }
    }

点击第 3 和第 4 个按钮后,显示类似

的错误

“集合已修改;枚举操作可能无法执行。”

【问题讨论】:

  • 对于它的价值,拥有一个 和一个“重置”按钮来清除 box2 是多余的。

标签: c# asp.net c#-4.0


【解决方案1】:

您在迭代集合时正在修改它。我没有 IDE,但你可以试试:

protected void btn3_Click(object sender, EventArgs e)
{
    lbltext.Visible = false;
    if (lstBoxAreaOfResponsibility2.Items.Count != 0)
    {
        lstBoxAreaOfResponsibility2.Items.Clear();
    }
    else
    {
        lbltext.Visible = true;
        lbltext.Text = "There Is No Item To Move";
    }
}

protected void btn4_Click(object sender, EventArgs e)
{
    lbltext.Visible = false;
    if (lstBoxAreaOfResponsibility2.SelectedIndex >= 0)
    {
        ListItem itemToDelete = new ListItem();
        foreach (ListItem Item in lstBoxAreaOfResponsibility2.Items)
        {
            if (Item.Selected == true)
            {
                itemToDelete = Item;
            }
        }
        lstBoxAreaOfResponsibility2.Items.Remove(itemToDelete);
    }
    else
    {
        lbltext.Visible = true;
        lbltext.Text = "Please select atleast one in Listbox2 to move";
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多