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
将查找删除指定的项目。
我正在测试一种与我正在制作的游戏的保存文件进行交互的方法,这种方法会将文件逐行导入到一个列表框中,该列表框将用于操作。
这个简单的测试表单将文本框中的文本添加到列表框中,但如果包含新字符串的行已经存在,则应在添加新字符串之前将其删除。
但是,如下所示的代码只会 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
将查找删除指定的项目。