此枚举器绑定到的列表已被修改.只有在列表未更改的情况下才能使用枚举器

本文关键字:列表 枚举 情况下 绑定 修改 | 更新日期: 2023-09-27 18:04:13

我创建了下面的代码,它从未给我任何错误:

foreach (var item in clb_frente_campos.CheckedItems)
{
    if (item == "numero_carteira")
    {            
        clb_frente_impressao.Items.Add(item);
        break;
    }
    else
    {
        if (!clb_frente_impressao.Items.Contains(item))
        {
            clb_frente_impressao.Items.Add(item);
            break;
        }
    }
}

此代码是一个按钮,用于将checked值从一个CheckedListBox传递到另一个
注意,虽然项目numero_carteirachecked,但它将被反复添加到我的另一个CheckedListBox中。因为项目numero_carteira是唯一可以多次添加的项目。但我希望他只在selected时添加,这就是我制作这个新代码的原因:

foreach (var item in clb_frente_campos.CheckedItems)
{
    if (item == "numero_carteira")
    {
        if (clb_frente_campos.SelectedItem.ToString() == "numero_carteira")
        {
            clb_frente_impressao.Items.Add(item);
            break;
        }
    }
    else
    {
        if (!clb_frente_impressao.Items.Contains(item))
        {
            clb_frente_impressao.Items.Add(item);
            break;
        }
    }
}

这个新代码就是标题中的error
也是我见过的最奇怪的事情。当我使用breakpoints并逐步调试它时。。。它是如何工作的?为什么?

此枚举器绑定到的列表已被修改.只有在列表未更改的情况下才能使用枚举器

如果它在使用调试器时有效,那么几乎可以肯定会出现线程问题。在没有看到其余代码的情况下进行调试是很困难的,但我的直觉是要寻找可能在clb_frente_impressao.Items上循环的其他地方。