Вы не можете добавить точно такую же строку снова.Вам нужно будет создать новую строку и заполнить ее значениями из строки, которую вы дублируете, а затем добавить новую строку в grvList.Rows
Я не уверен, какие значения у вас есть в каждомячейка, но до тех пор, пока они являются типами значений, должно работать что-то вроде следующего:
For Each m_row As System.Windows.Forms.DataGridViewRow In Me.grvList.Rows
If m_row.Cells("chksel").Value = True Then
'Create new row to hold duplicated values
Dim NewRow As DataRow = grvList.NewRow()
'loop thru existing rows to copy values
For i As Integer = 0 To m_row.Cells.Count - 1
NewRow(i) = m_row.Cells(i).Value
Next
'Add newly create row to table
Me.grvList.Rows.Add(NewRow)
' Me.grvList.Rows.Remove(m_row)
End If
Next
Имейте в виду, что если элементы в любой из ячеек являются ссылочными типами, вы все равно будете ссылаться на тот же элементвместо создания копии предмета.Как и вы, просто вызывая add в той же строке, что и вы.
Извините, я пропустил, что строки были строками DataGridView, а не связанными данными, которые должны быть связаны с этим ...case:
For Each m_row As System.Windows.Forms.DataGridViewRow In Me.grvList.Rows
If m_row.Cells("chksel").Value = True Then
'Create new row to hold duplicated values
Dim NewRow As DataGridViewRow = m_row.Clone
'Add newly create row to table
Me.grvLIst.Rows.Add(NewRow)
End If
Next