2015-06-25 174 views
1

所以我试图返回我的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 
+2

'对于CN = 0到DataGridView1.Columns.Count - 1'也许? – Arvo

+0

*尤其*如果列可以变化,请使用Columns.Count-1 – Plutonix

+0

非常感谢@Arvo – Muhnamana

回答

2

“索引超出范围”的异常可能发生,当你试图在不存在

让我们把你的例子索引来访问集合中的一员 - 你,是因为你的cn到这儿错误DataGridView1.Columns(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