0

在处理同一数据网格视图控件 System.InvalidOperationException 中的行时出现以下异常 消息 =“提供的行已经属于 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 控件

4

1 回答 1

0

问题是您正在使用对数据行的引用。中的行

For Each row In currentRowCollection

实际上是对数据视图中已经存在的行的引用。

在调用插入之前,您需要对行中的数据进行深层复制。

myRow = DataGridViewWorkGroupDetails.NewRow();
myRow.ItemArray = row.ItemArray;
DataGridViewWorkGroupDetails.Rows.Add(myRow);

我还没有测试过这段代码,但它应该可以工作

于 2012-02-14T06:33:31.547 回答