2015-06-25 172 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