我正在尝试根据字符串的存在来过滤列表框。基本上,如果有一个 ListItem 不包含该字符串,那么我想删除所有包含该字符串的 ListItem。这是我尝试过的:
Dim Item As ListItem
For Each Item In CtheList.Items
If Item.Text.IndexOf("W:") = -1 Then
CtheList.Items.Remove(Item)
End If
Next
这显然是一个禁忌,因为它会生成错误:集合已修改;枚举操作可能无法执行。
我也尝试过:
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
这会生成索引超出范围异常。
任何帮助是极大的赞赏。
尝试反转循环,即从列表末尾开始。这样,删除项目不会改变您仍然需要检查的剩余项目的索引(这是超出范围异常的原因)。
第一种方法会导致问题,因为您在迭代列表时修改列表。正如你所说,这是一个很大的禁忌。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)