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

Winforms 比较从System.Windows.Forms.ListBox中删除所选项目的不同方法,winforms,listbox,Winforms,Listbox,到目前为止,我找到了两种从列表框(winform)中删除选定项目的方法: 一, 二, 第二种方法很容易理解,但第一种对我来说很奇怪。它们都是为我工作的,我只是想知道它们的区别?第一种方式写得很奇怪。它看起来很奇怪,因为它倒着走。这样就不会打乱所选项目的集合。所选项目集合未完全创建,它是一个可枚举集合,只有在您请求时,项目才会从中删除。无法使用foreach,因为在删除项目时,所选项目的集合会不断更改 实际上我更喜欢第二种方式。此外,读起来容易的东西更容易维护。第一个是:获取所选项目,向后浏览,从

到目前为止,我找到了两种从列表框(winform)中删除选定项目的方法:

一,

二,


第二种方法很容易理解,但第一种对我来说很奇怪。它们都是为我工作的,我只是想知道它们的区别?

第一种方式写得很奇怪。它看起来很奇怪,因为它倒着走。这样就不会打乱所选项目的集合。所选项目集合未完全创建,它是一个可枚举集合,只有在您请求时,项目才会从中删除。无法使用foreach,因为在删除项目时,所选项目的集合会不断更改

实际上我更喜欢第二种方式。此外,读起来容易的东西更容易维护。第一个是:获取所选项目,向后浏览,从列表中删除每个项目

第二个选项是:当存在选定项时,删除第一个可用的选定项

第二条路更好

ListBox.SelectedObjectCollection tempCollection = new ListBox.SelectedObjectCollection(myListBox);
for (int i = tempCollection.Count - 1; i >= 0; i--)
{
    myListBox.Items.Remove(tempCollection[i]);
}
while (myListBox.SelectedItems.Count > 0)
{
    myListBox.Items.Remove(myListBox.SelectedItem);
    // or
    //myListBox.Items.Remove(myListBox.SelectedItems[0]);
}