如何删除列表框和集合中的项目

时间:2018-04-03 19:23:32

标签: c# winforms listbox

我有一个列表框,我想用这个列表框删除集合中的对象。但我只能删除第一项(选择索引0)为什么?我无法解决这个问题

private void removeButton_Click(object sender, EventArgs e)
{
    foreach (Student element in studentCollection) {

        if (studentListbox.SelectedIndex != -1 && element.Name == studentListbox.SelectedItem.ToString())
        {
            studentCollection.Remove(element);
            studentListbox.Items.RemoveAt(studentListbox.SelectedIndex);
        }
        break;
    }
}

2 个答案:

答案 0 :(得分:0)

使用For循环而不是foreach循环。 Foreach循环无法工作,因为集合中的项目数量会不断变化。

这样的事情:

private void removeButton_Click(object sender, EventArgs e)
{
        student element;
        for (int i = 0; i < studentCollection.items.count; i++)
        {
            element = studentCollection[i];
            //Remove your item here
        }
}

答案 1 :(得分:0)

var index = studentListbox.SelectedIndex;
if (index != -1)
{
    var student = studentCollection.First(s => s.Name == studentListbox.SelectedValue.ToString());
    studentCollection.remove(student);
    studentListbox.Items.RemoveAt(index);
}

你真的需要写作吗。

首先获取索引以减少重复和潜在错误。

然后我们使用LINQ第一种方法找到学生。

然后我们删除了学生。

最后,我们删除了相关的列表项。