Drag-and-Drop in datagridview in vb.net
Ich bin mit zwei Datagridview
in meinem code, ich ziehen Sie Inhalt aus Me.datagridview2
und legen Sie es auf Me.datagridview1
.Dieser Prozess erfolgreich ist. Aber sobald ich auf die Zelle andere als die verworfene Inhalt der Zelle, die gelöschte Inhalte verschwinden. Hier ist mein code
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
Habe folgenden Zweifel,
1. warum die abgelegten Inhalte verschwinden.
2. wenn wir beginnen, Bearbeiten Sie auf "datagridview", eine Zeile automatisch Hinzugefügt unten. Warum es nicht Hinzugefügt wird, wenn ich drop Inhalte in datagridview.?
Bitte helfen Sie mir.
- Ich bin ein wenig besorgt, wie Sie hinzufügen, dass die Zeile mit Zellen(num).Wert und nicht mit einer for-Schleife in Fall, dass Sie eine Spalte hinzuzufügen in der Zukunft. Es gibt auch die Tatsache, dass du tust .SelectedRows(0).Index, was ist, wenn Sie mehrere Zeilen, die Sie ausgewählt, und Sie möchten, zu ziehen/kopieren?
- dont Sie möchten, fügen Sie eine neue Zeile für die gelöschten Daten? wie sieht es aus, ersetzen Sie die vorhandenen Inhalte
- eigentlich bin ich Drag und Drop nur eine Zeile zu einem Zeitpunkt also keine Schleife erforderlich.
- wenn ich versuche das hinzufügen dieser Zeile gibt es Fehler, die
when datagridview is databound, rows cannot be added programmatically
. - Das ist eins Ihrer Probleme dort dann. Ihr datagridview hat einige Daten schon verbunden/zugeordnet.
- Also, was soll ich tun @sparkysword, irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tatsächlich, ich habe gerade eine alternative zu meiner eigenen Frage. Hier ist es.
Vielmehr als das kopieren der Inhalte von
r
ZeileMe.DataGridview.
alle Zellen , ich bin direkt hinzufügenr
Zeile, um meine Datenquelle mit dem Namendragsaldet
. Und das Tat den trick für mich.