如何在DataGridViews之间拖放选定的行

时间:2017-10-26 21:22:52

标签: vb.net visual-studio datagridview drag-and-drop

我需要实现将所选行从一个网格拖放到另一个网格:

我的代码:

datagridview1

Private Sub datagridview1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles datagridview1.MouseDown

    Dim info As DataGridView.HitTestInfo = Me.datagridview1.HitTest(e.X, e.Y)

    If info.Type = DataGridViewHitTestType.Cell And e.Button = Windows.Forms.MouseButtons.Left Then

        Me.datagridview1.DoDragDrop(datagridview1.SelectedRows.Cast(Of DataGridViewRow).OrderBy(Function(r) r.Index).ToArray, DragDropEffects.All)

    End If

End Sub

datagridview2

Private Sub datagridview2_DragEnter(sender As Object, e As DragEventArgs) Handles datagridview2.DragEnter

    e.Effect = DragDropEffects.All
End Sub

Private Sub datagridview2_DragDrop(sender As Object, e As DragEventArgs) Handles datagridview2.DragDrop

    Try
        Dim Rows() As DataGridViewRow = DirectCast(e.Data.GetData(GetType(DataGridViewRow())), DataGridViewRow())

        For Each row As DataGridViewRow In rows

            MsgBox(row.Cells("ID").Value)


        Next
    Catch ex As Exception

    End Try

End Sub

但转换时出错。 任何想法?

1 个答案:

答案 0 :(得分:0)

尝试发送所选行的副本:

Dim dgrCopy(datagridview1.SelectedRows.Count - 1) As DataGridViewRow
datagridview1.SelectedRows.CopyTo(dgrCopy, 0)
Me.datagridview1.DoDragDrop(dgrCopy.OrderBy(Function(r) r.Index).ToArray, DragDropEffects.All)
相关问题