对于循环导致不需要的"退出sub"事件

时间:2011-11-21 22:58:42

标签: vb.net vb.net-2010

Vb.net 2010 Express中非常奇怪的行为。这是代码:

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As Integer
        '... Other lines...'
        Dim di As New IO.DirectoryInfo(App_Path & "midi\")
        Dim diar1 As IO.FileInfo() = di.GetFiles()
        For a = 0 To diar1.Count
            midrep(a) = diar1(a).Name
        Next a
        Preload()
End Sub

由于某种原因,不执行带有“Preload()”指令的最后一行。 (我检查了一个断点,它甚至没有得到它)​​。

如果我删除循环,它可以正常工作。在循环中,我没有得到任何错误或警告,但最后一行被完全忽略。 for循环正确执行。

我需要Preload()之前的循环。

任何人都知道如何解决这个问题?

谢谢大家

1 个答案:

答案 0 :(得分:2)

我会冒险猜测你没有离开For循环,因为你超出了midrep的范围(你没有给我们这个类型of)或diar1,这显然是FileInfo个对象的数组。

事实上,无论midrep的定义如何,你肯定超出了diar1的范围,因为diar1.Count总是比最后一个可用索引高一个。您需要停止之前>到diar1.Count

For a = 0 To diar1.Count - 1
'                       ^^^^
    midrep(a) = diar1(a).Name
Next a