我正在测试一种与我正在制作的游戏保存文件进行交互的方法,这种方法会逐行将文件导入到用于操作的列表框中。
这个简单的测试表单将文本框中的文本添加到列表框中,但如果包含新字符串的行已经存在,则应在添加新字符串之前将其删除。
但是,如下所示的代码只返回索引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
不会抛出任何异常,但它不会删除该项目。 有什么想法吗?
答案 0 :(得分:1)
你写了ListBox1.Items.Remove(index)
。在这里,您调用方法从集合中删除项目,但是将其传递给索引。
您应该更改为使用
ListBox1.Items.RemoveAt(index)
或
ListBox1.Items.Remove(str)
RemoveAt
会从指定的index
中移除一个项目。 Remove
将查找删除指定的项目。