VB - IndexOf 总是 returns 0

VB - IndexOf always returns 0

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

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

但是,如下所示的代码只会 return 索引 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

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

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

您应该改为使用其中之一

ListBox1.Items.RemoveAt(index)

ListBox1.Items.Remove(str)

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