到目前为止,我找到了两种方法从列表框中删除所选项目(winform):
1
ListBox.SelectedObjectCollection tempCollection = new ListBox.SelectedObjectCollection(myListBox);
for (int i = tempCollection.Count - 1; i >= 0; i--)
{
myListBox.Items.Remove(tempCollection[i]);
}
2
while (myListBox.SelectedItems.Count > 0)
{
myListBox.Items.Remove(myListBox.SelectedItem);
// or
//myListBox.Items.Remove(myListBox.SelectedItems[0]);
}
第二种方式很容易理解,但第一种方式对我来说很奇怪。他们都为我工作,我只是想知道其中的差异?
答案 0 :(得分:0)
第一种方式写得非常奇怪。它看起来很奇怪,因为它倒退了。这样就不会扰乱所选项目的集合。所选的项目集合未完全创建,它是一个Enumerable集合,只有当您要求它们时,项目才会被删除。您不能使用foreach,因为在删除项目时,所选项目的集合会不断变化。
我其实更喜欢第二种方式。此外,更容易阅读更容易维护。第一个读取:获取所选项目,向后浏览,从列表中删除每个项目。
第二个读取:虽然有选定的项目,但删除第一个可用的选定项目。
第二种方式好多了。