VB.NET中的每个循环都不工作

VB.NET中的每个循环都不工作,vb.net,foreach,Vb.net,Foreach,我有一个列表框,其中有x个从txt文件加载的对象,代码如下: Dim lines() As String = IO.File.ReadAllLines(Application.StartupPath() + "\file.txt") List.Items.AddRange(lines) Try List.SelectedIndex = 0 Catch ex As Exception End Try Return True 它

我有一个列表框,其中有x个从txt文件加载的对象,代码如下:

    Dim lines() As String = IO.File.ReadAllLines(Application.StartupPath() + "\file.txt")
    List.Items.AddRange(lines)

    Try
        List.SelectedIndex = 0
    Catch ex As Exception

    End Try

    Return True
它可以很好地装载它们。然后我就试着这样循环:

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim num As Integer = 0
    Dim item As Object

    For Each item In List.Items
        List.SelectedIndex = num
        num += 1
    Next

End Sub
我得到的错误是:

System.Windows.Forms.dll中发生类型为“System.InvalidOperationException”的未处理异常

其他信息:已修改此枚举数绑定到的列表。仅当列表未更改时,才能使用枚举数

我试图手动加载列表框,但没有帮助。 这里有什么帮助吗?

使用

    For num = 0 To List.Items.Count - 1
        List.SelectedIndex = num
    Next
正如@CodyGray正确指出的那样:这是因为如果要修改正在枚举的项集合,则不能使用for-each循环

这将以选择的最后一个项目结束,因此,只有在测试每个项目的事件处理程序时,它才真正有用。

使用

    For num = 0 To List.Items.Count - 1
        List.SelectedIndex = num
    Next
正如@CodyGray正确指出的那样:这是因为如果要修改正在枚举的项集合,则不能使用for-each循环


这将以选择的最后一个项目结束,因此只有在您测试每个项目的事件处理程序时,它才真正有用。

您试图通过该循环实现什么?仅更改所选索引@Fairy永远不要使用空的try catch。它隐藏了问题,但为什么要循环呢?有什么意义?是否要浏览每个项目并选择它?是。重点是检查每一项。稍后,我可以用它添加一些东西@fairy你想用这个循环完成什么?只是为了更改所选的索引@Fairy永远不要使用空的try catch。它隐藏了问题,但为什么要循环呢?有什么意义?是否要浏览每个项目并选择它?是。重点是检查每一项。稍后我可以添加一些内容@FairyYou应该解释为什么要这样做。换句话说,为什么您的解决方案可以解决问题。(如果要修改正在枚举的项集合,则不能使用for-each循环。)您应该解释为什么必须这样做。换句话说,为什么您的解决方案可以解决问题。(如果要修改正在枚举的项目集合,则不能使用for-each循环。)