列表框项目删除

时间:2014-11-30 13:33:41

标签: vb.net visual-studio-2010 listbox

如何在包含"?"之后删除我的列表框项目文本? ?

示例列表框项目文本:

I want it ? please, remove it.

我的代码:

        For i = 0 To ListBox1.Items.Count - 1

        If ListBox1.Items(i).ToString.StartsWith("?") Then
        'something useful for me.
        End If
        Next

如果我想删除特定文本,请使用它。

For i = 0 To CheckedListBox1.Items.Count - 1
            If CheckedListBox1.Items(i).ToString.Contains("something") Then
                CheckedListBox1.Items(i) = CheckedListBox1.Items(i).ToString.Replace("something", "")
            End If

但它是动态生成的列表框项目。 例如:

I want it ? please, remove it.1234
I want it ? please, remove it.2345
I want it ? please, remove it.64653
I want it ? remove461
etc...

1 个答案:

答案 0 :(得分:2)

开始向后循环,然后使用RemoveAt

For i = ListBox1.Items.Count - 1 To 0 Step -1
    If ListBox1.Items(i).ToString.StartsWith("?") Then
       ListBox1.Items.RemoveAt(i)
    End If
Next

如果要从集合中删除一个或多个项目,则从集合的末尾向其第一个元素循环非常重要。如果循环进入正常的前进模式,则在删除项目时可能会出现问题。例如,如果您移除位置5处的项目,则位置6处的项目在位置5处移位,但随后您将循环索引器增加到6,从而有效地跳转您之前在位置6处的项目的逻辑

更新:如果您要删除包含问号的项目,请使用其他方法检查已检查项目中是否存在问号

For i = ListBox1.Items.Count - 1 To 0 Step -1
    If ListBox1.Items(i).ToString.Contains("?") Then
       ListBox1.Items.RemoveAt(i)
    End If
Next

或者,如果你想替换包含问号的当前项目,请在问号后写下这样的文字

For i = ListBox1.Items.Count - 1 To 0 Step -1
    If ListBox1.Items(i).ToString.Contains("?") Then
       Dim item = ListBox1.Items(i).ToString()
       Dim pos = item.IndexOf("?"c)
       item = item.Substring(0, pos)
       ListBox1.Items(i) = item
    End If
Next

最后,如果问号被空格包围,您可以添加TrimEnd

 item = item.Substring(0, pos).TrimEnd()