我在同一个数据网格视图控件中处理行时遇到异常 System.InvalidOperationException未处理 Message =“提供的行已经属于DataGridView控件。” 以下是复制方法,将 currentRowCollection中的选定行复制为DataGridViewSelectedRowCollection
copy()
{
If (DataGridViewWorkGroupDetails.Rows.Count = 1) Then
Exit Sub
End If
Try
pasteMode = "copy"
currentRowCollection = DataGridViewWorkGroupDetails.SelectedRows
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "frmworkgroup:copyRowCollectionError")
End Try
}
以粘贴方式
paste()
{
Dim row As DataGridViewRow
Dim myRow As DataGridViewRow
For Each row In currentRowCollection
myRow = row
myRow.Cells.Item(1).Value = String.Empty
DataGridViewWorkGroupDetails.Rows.Insert(DataGridViewWorkGroupDetails.Rows.Count - 1, myRow)
Next
}
在粘贴粘贴方法期间,我希望将第1列保留为空字符串.. 当我将行从一个datagridview复制到另一个时,它可以正常工作,但是当我复制到同一个datagridview时,它会添加异常。提供的行已经属于DataGridView控件
答案 0 :(得分:0)
问题是您正在使用对数据行的引用。
中的行For Each row In currentRowCollection
实际上是对数据视图中已存在的行的引用。
在调用插入符之前,您需要对行中的数据执行深层复制。
myRow = DataGridViewWorkGroupDetails.NewRow();
myRow.ItemArray = row.ItemArray;
DataGridViewWorkGroupDetails.Rows.Add(myRow);
我没有测试过这段代码,但它应该可以运行