所以我试图在我的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
答案 0 :(得分:2)
"指数超出范围"当您尝试访问不存在的索引
下的集合成员时,可能会发生异常让我们举例 - 您在DataGridView1.Columns(cn)
收到错误,因为cn
的值在DataGridView1.Columns
中不存在。例如,如果您有2列,则索引为0
和1
。如果您尝试要求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