0

同じデータグリッド ビュー コントロール System.InvalidOperationException で行を処理しているときに、次の例外が発生します。以下は、 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 コントロールに属しています

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 に答える