比较从System.Windows.Forms.ListBox中删除所选项的不同方法

时间:2009-04-09 07:28:11

标签: winforms listbox

到目前为止,我找到了两种方法从列表框中删除所选项目(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]);
}

第二种方式很容易理解,但第一种方式对我来说很奇怪。他们都为我工作,我只是想知道其中的差异?

1 个答案:

答案 0 :(得分:0)

第一种方式写得非常奇怪。它看起来很奇怪,因为它倒退了。这样就不会扰乱所选项目的集合。所选的项目集合未完全创建,它是一个Enumerable集合,只有当您要求它们时,项目才会被删除。您不能使用foreach,因为在删除项目时,所选项目的集合会不断变化。

我其实更喜欢第二种方式。此外,更容易阅读更容易维护。第一个读取:获取所选项目,向后浏览,从列表中删除每个项目。

第二个读取:虽然有选定的项目,但删除第一个可用的选定项目。

第二种方式好多了。