VB.NET Filtering ListItems Problem

Estoy tratando de filtrar un ListBox basado en la presencia de una cadena. Básicamente, si hay un ListItem que no contiene la cadena, quiero eliminar todos los ListItems que sí contienen la cadena. Esto es lo que he intentado:

Dim Item As ListItem
For Each Item In CtheList.Items
    If Item.Text.IndexOf("W:") = -1 Then
        CtheList.Items.Remove(Item)
     End If
 Next

Lo que aparentemente es un no-no, ya que genera el error: se modificó la colección; La operación de enumeración no puede ejecutarse.

También he intentado:

Dim Item As ListItem
For Each Item In CtheList.Items
    If Item.Text.IndexOf("W:") = -1 Then
        Dim i As Integer
        For i = 0 To CtheList.Items.Count - 1
            If CtheList.Items.Item(i).Text.IndexOf("W:") > -1 Then
                CtheList.Items.RemoveAt(i)
            End If
        Next i
    End If
Next

Lo que genera un índice fuera de rango de excepción.

Cualquier ayuda es muy apreciada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta