vb.net listbox-删除所有不包含特定文本的项目

时间:2013-07-17 19:50:49

标签: vb.net listbox

我正在使用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-”的项目?

编辑:如果有人问,列表框项目列表会变得越来越大,所以我添加了一个排序功能,以便用户可以根据需要调整选项。这就是为什么我在添加到列表框之前没有过滤任何东西

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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