索引超出范围(范围可变)

时间:2015-06-25 13:29:11

标签: vb.net indexing datagridview integer datagridviewcolumn

所以我试图在我的datagridview中返回所有列名。下面的代码返回列名,除了最后,我有一条消息说明Index was out of range我认为这是因为我的datagridview中的列少于500列。

500理论上可以是任何数量,有些可能只有20列,其他可能有300列。

我将如何清除此错误?

Dim c As Integer
    For cn = 0 To 500

        c = c + cn
        'Debug.Print(cn)
        Debug.Print(DataGridView1.Columns(cn).Name)

Next cn

1 个答案:

答案 0 :(得分:2)

"指数超出范围"当您尝试访问不存在的索引

下的集合成员时,可能会发生异常

让我们举例 - 您在DataGridView1.Columns(cn)收到错误,因为cn的值在DataGridView1.Columns中不存在。例如,如果您有2列,则索引为01。如果您尝试要求DataGridView1.Columns(2) - 您将获得此例外。因此,如上面评论中所述,在处理集合时,您可以使用For Each循环,也可以使用For... count -1循环

这是正确的代码:

For i as Integer = 0 To DataGridView1.Columns.Count - 1
    Debug.WriteLine(DataGridView1.Columns(i).Name)
Next

For Each

的示例
For Each s as String In myStrings  ' myStrings can be List(Of String)
    Debug.WriteLine(s)
Next