我有一个列表框,我想用这个列表框删除集合中的对象。但我只能删除第一项(选择索引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;
}
}
答案 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第一种方法找到学生。
然后我们删除了学生。
最后,我们删除了相关的列表项。