VB - IndexOf总是返回0

时间:2018-05-28 22:04:13

标签: vb.net indexof

我正在测试一种与我正在制作的游戏保存文件进行交互的方法,这种方法会逐行将文件导入到用于操作的列表框中。

这个简单的测试表单将文本框中的文本添加到列表框中,但如果包含新字符串的行已经存在,则应在添加新字符串之前将其删除。

但是,如下所示的代码只返回索引0

    Private Sub ... Handles Button1.Click
    Dim str As String = TextBox1.Text

    'if exists
    If ListBox1.Items.Contains(str) Then
        'find
        index = ListBox1.Items.IndexOf(str)

        'remove
        ListBox1.Items.Remove(index)
    End If
    ListBox1.Items.Add(TextBox1.Text)
End Sub

不会抛出任何异常,但它不会删除该项目。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你写了ListBox1.Items.Remove(index)。在这里,您调用方法从集合中删除项目,但是将其传递给索引。

您应该更改为使用

ListBox1.Items.RemoveAt(index)

ListBox1.Items.Remove(str)

RemoveAt会从指定的index中移除一个项目。 Remove将查找删除指定的项目。