如何从列表框中删除选定的项目

How to remove selected items from a listbox

这是针对 VS2015 社区中的 VB.NET 4.5 项目。

我正在尝试从列表框中删除某些选定的项目,但前提是选定的项目满足条件。我发现了很多关于如何删除所选项目的示例。但是没有任何东西适用于嵌套在遍历所选项目的循环中的条件(至少,我无法让这些示例与我正在尝试做的事情一起工作......)

这是我的代码:

    Dim somecondition As Boolean = True
    Dim folder As String
    For i As Integer = 0 To lstBoxFoldersBackingUp.SelectedItems.Count - 1

        If somecondition = True Then
            folder = lstBoxFoldersBackingUp.SelectedItems.Item(i)
            Console.WriteLine("folder: " & folder)
            lstBoxFoldersBackingUp.SelectedItems.Remove(lstBoxFoldersBackingUp.SelectedItems.Item(i))
        End If
    Next

控制台输出正确显示了当前迭代项目的文本,但我无法使 Remove() 工作。正如现在的代码一样,我得到了控制台输出,但列表框没有改变。

删除项目会更改项目的索引位置。有很多方法可以解决这个问题,但是从您的代码中,尝试向后迭代以避免该问题。您还应该从 Items 集合中删除该项目,而不是 SelectedItems 集合:

For i As Integer = lstBoxFoldersBackingUp.SelectedItems.Count - 1 To 0 Step -1
  If somecondition = True Then
    folder = lstBoxFoldersBackingUp.SelectedItems.Item(i)
    Console.WriteLine("folder: " & folder)              
    lstBoxFoldersBackingUp.Items.Remove(lstBoxFoldersBackingUp.SelectedItems(i))
  End If
Next

您可以简单地使用它来从列表框中删除选定的项目 ListBox1.Items.Remove(ListBox1.SelectedItem)

希望对您有所帮助。

这行不通:

ListBox1.Items.Remove(ListBox1.SelectedItem) 

您需要准确定义要删除的项目,所以下一个对我来说很好:

ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)

但是每次调用它都会删除一行。