2014-09-04 88 views
1

您好我想在tick事件上循环我的数据网格视图。此代码做循环然而在循环的最后,提示错误Datagridview行索引超出范围在vb

“索引超出范围。必须为非负且小于大小的集合 。”

在下面的代码中的注释行。

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
    'loop each rows in datagridview 
    Dim i As Integer = 0 
    For i = 0 To DataGridView2.RowCount - 1 
     If DataGridView2.Rows(i).Cells(8).Value = DataGridView2.Rows(i).Cells(17).Value Then 'error prompted 
     'delete 1 row from datagridview 
    Else 
     'do some other operations 
    End If 
    Next 
End Sub 

这个错误发生时DataGridView2.RowCount = 1
如何解决这个问题?我应该在for循环之前添加这一行吗?我是新手,请告知。

If DataGridView2.RowCount <> 1 Then 

回答

3

如果要删除行,你必须使用一个Step -1For loop因为行数量的变化,如果你删除其中之一。

在您的代码:

For i = DataGridView2.RowCount - 1 To 0 Step -1 
+0

所以我应该消除暗淡我作为整数= 0? – Ren 2014-09-04 08:38:40

+1

不一定。你必须改变For循环的sintax,所以我开始作为DataGridView的行数。你也可以使用这个语法:For i as Integer = DataGridView2.RowCount - 1 To 0 Step -1 – tezzo 2014-09-04 08:44:23