如果项目存在于另一个ListBox中,则从ListBox中删除项目

goo*_*lla 2 c# listbox

我试图从ListBox中删除数字项,如果这些值存在于另一个ListBox中.我的代码似乎不起作用,我找不到任何在线帮助.ListBox1由Array填充,ListBox2由DataSet表(fyi)填充.

另外供参考:我没有添加项目到列表框或选择...只是想比较两个并从ListBox1中删除ListBox2项目,如果它们全部存在,只需按一下按钮即可.谢谢,

private void button1_Click(object sender, EventArgs e)
{
    foreach (int item in listBox1.Items)
    {
        if (listBox2.Items.Contains(item))
        {
            listBox1.Items.Remove(item);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 5

那么你只是在你的代码中引用一个列表框 - 我怀疑你会想要:

private void button1_Click(object sender,EventArgs e){

foreach (int item in listBox1.Items)
{
    if (listBox2.Items.Contains(item))   // notice change of reference
    {
        listBox1.Items.Remove(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误,因为您正在修改ListBox迭代它的项目.一种安全删除项目的方法是在集合上向后迭代:

for (int i = listBox1.Items.Count - 1; i >= 0; i--)
{
    int item = listBox1.Items[i];
    if (listBox2.Items.Contains(item))   // notice change of reference
    {
        listBox1.Items.RemoveAt(i);
    }
}
Run Code Online (Sandbox Code Playgroud)