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 に答える