0

我正在使用 vb.net 中的列表框,并尝试通过单击按钮从列表框中删除不包含特定文本的所有项目。这是我的代码:

   Dim i As Integer
    For i = 0 To ListBoxPrePublish.Items.Count - 1
        If InStr(ListBoxPrePublish.Items(i), "-8-") > 0 = False Then
            ListBoxPrePublish.Items.RemoveAt(i)
            Exit For
        End If
    Next

不过,这一次只能删除 1 个项目。如何调整它以一次删除所有不包含“-8-”的项目?

编辑:万一有人问,列表框项目列表变得相当大,所以我添加了一个排序功能,这样用户可以根据需要调整他们的选项。这就是为什么我在添加到列表框之前不过滤任何内容

4

2 回答 2

1

这是我在评论中提到的反向循环的完整代码 - 它应该可以工作:

For i as Integer = ListBoxPrePublish.Items.Count - 1 To 0 Step -1 
    If Not ListBoxPrePublish.Items(i).Contains("-8-") Then
        ListBoxPrePublish.Items.RemoveAt(i)
    End If
Next
于 2013-07-17T20:05:01.693 回答
1

不,我不知道任何RemoveRange类型的功能。并且请注意,当您删除项目时,您需要向后循环列表框Items集合,否则您将获得索引异常,因为一旦您删除了某些内容,它会弄乱迭代器中所有剩余项目的索引值。

于 2013-07-17T19:58:28.233 回答