我有两个datagridview,在dgv1中,我有一个按钮,用于删除选定的行并将选定的行传输到我的第二个dgv2,问题是,在第二次我删除一行时,它覆盖了我删除的行< / p>
我尝试了多个代码,但最终都遇到了相同的问题
Dim row As New DataGridViewRow
Dim nextrow As New DataGridViewRow
For Each row In DataGridView3.Rows
For Each nextrow In DataGridView3.Rows
If row.Index <> nextrow.Index Then
If row.Cells(0).Value = nextrow.Cells(0).Value AndAlso
row.Cells(2).Value = nextrow.Cells(2).Value AndAlso row.Cells(3).Value
= nextrow.Cells(3).Value AndAlso row.Cells(8).Value =
nextrow.Cells(8).Value Then
DataGridView3.Rows.Remove(row)
DataGridView3.Rows.Remove(nextrow)
End If
End If
Next
Next
它在第一次尝试时有效,但是在第二次它覆盖了我的dgv2中的数据 我想显示从dgv1到dgv2的已删除数据
答案 0 :(得分:0)
在使用收藏夹并删除项目时,一种好方法是在收藏夹中向后浏览而不是向前浏览。这是因为如果您删除/删除集合中的一个项目,则它可以更改集合。例如,删除第4项,使第5项成为第4项,然后尝试对第5项进行操作,但现在是第6项,依此类推。
要消除此问题,请尝试以下操作:
Dim myrows As Integer = gvw.rows.count
Dim row as GridViewRow, rownext as GridViewRow
For myrow As Integer = myrows -1 To 0 Step -1
row = gvw.rows(myrow)
rownext gvw.rows(myrow - 1)
'Do some comparison
If .. Then
gvw.rows.Remove(myrow) 'you can remove it because it is the last row
End If
If myrow = 1 Then Exit For 'cannot go lower
Next