簡體   English   中英

在vb.net中的datagridview中拖放

[英]Drag and Drop in datagridview in vb.net

我在我的代碼中使用了兩個Datagridview ,我從Me.datagridview2拖動內容並將其放在Me.datagridview1 。這個過程是成功的。 但是,只要我單擊除了丟棄的內容單元格以外的單元格,刪除的內容就會消失。 這是我的代碼

 Private Sub DataGridView2_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles DataGridView2.MouseDown
    Try
        If Me.DataGridView2.SelectedRows.Count = 0 Then
            Exit Sub
        End If
        Me.DataGridView2.DoDragDrop(Me.DataGridView2.SelectedRows(0), DragDropEffects.All)
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub DataGridView1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
  Try
        Dim r As DataGridViewRow = e.Data.GetData(GetType(DataGridViewRow))
        If Me.DataGridView1.SelectedRows.Count = 0 Then
            Exit Sub
        End If

        Dim i As Integer = Me.DataGridView1.SelectedRows(0).Index
        Me.DataGridView1.Rows(i).Cells(1).Value = r.Cells(0).Value
        Me.DataGridView1.Rows(i).Cells(2).Value = r.Cells(1).Value
        Me.DataGridView1.Rows(i).Cells(3).Value = r.Cells(2).Value
        Me.DataGridView1.Rows(i).Cells(4).Value = r.Cells(3).Value

    Catch ex As Exception
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub

Private Sub DataGridView1_DragEnter(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragEnter
    Try
        e.Effect = DragDropEffects.Copy
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub



有以下疑慮
1.為什么丟棄的內容會消失。
2.每當我們開始編輯datagridview時,下面會自動添加一行。 當我在datagridview中刪除內容時為什么不添加它?

請幫我。

實際上,我只是替代了自己的問題。 就是這樣。

  Private Sub DataGridView1_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
  Try
        Dim r As DataGridViewRow = e.Data.GetData(GetType(DataGridViewRow))
        If Me.DataGridView1.SelectedRows.Count = 0 Then
            Exit Sub
        End If
        Dim i As Integer = Me.DataGridView1.SelectedRows(0).Index
        dragseldet.Tables(0).Rows.Add("", r.Cells(0).Value, r.Cells(1).Value, r.Cells(2).Value, r.Cells(3).Value, 0, 0)
        dragseldet.AcceptChanges()
        'Me.DataGridView1.Rows(i).Cells(1).Value = r.Cells(0).Value
        'Me.DataGridView1.Rows(i).Cells(2).Value = r.Cells(1).Value
        'Me.DataGridView1.Rows(i).Cells(3).Value = r.Cells(2).Value
        'Me.DataGridView1.Rows(i).Cells(4).Value = r.Cells(3).Value

    Catch ex As Exception
        MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try
End Sub


而不是將內容從r行復制到Me.DataGridview. 所有單元格,我直接將r行添加到名為dragsaldet數據源中。 這對我來說很有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM