Drag and Drop

Celem tego toturiala jest stworzenie formy w której będzie można przenosić komórki między jedną datagrid a drugą.

dandd1

No to zaczynamy. Po stworzeniu nowego projektu dodajemy do naszej formy pusty datagrid ( po lewej stronie wybieramy >>Toolbox i znajdujemy „Datagrid”, przeciągamy go na naszą formę. Robimy to dwukrotnie. Dodajemy w każdym datagridzie po trzy kolumny (albo tyle kolumn ile nam potrzeba).

Bardzo istotną sprawą w tworzeniu tego typu formy jest odblokowanie w naszych datagrid możliwości przyjmowania nowych kolumn jak i ich wysyłania. Odblokowujemy to w „Properties” naszego datagrid

dandd3

Kiedy mamy początek zrobiony zaczynamy wprowadzać kod do naszej formy.

Dodajemy w form load kod odpowiedzialny za wprowadzenie na początku różne cyfry które będziemy mogli przerzucać.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Dim i As Integer
 For i = 1 To 100 '' dla i od 1 do 100, stworzy nam 100 wierszy
 DataGridView1.Rows.Add(i, i * 10, i * 1000) '''(pierwsza kolumna, druga, trzecia)
 Next
 End Sub

Teraz kiedy mamy dodane eksperymentalne wiersze możemy dodać możliwość przerzucania tych wierszy między naszymi datagrid.

Najpierw dodamy możliwość przenoszenia wierszy dla naszego pierwszego datagrid z którego będziemy czerpać wiersze. czynimy to kodem:

Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
 If DataGridView1.SelectedRows.Count = 0 Then
 Exit Sub
 End If
DataGridView1.DoDragDrop(DataGridView1.SelectedRows(0), DragDropEffects.All)
 End Sub

kod ten należy do opcji: DataGridView1.MouseDown

Opcje MouseDown można znaleść w: Properties>>Events>>MouseDown

dand4Teraz mamy możliwość przenoszenia naszych wierszy w naszym datagrid1.

Następnym naszym krokiem jest dodanie możliwości odbierania wierszy.

Private Sub DataGridView2_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragDrop
 Try
 Dim r As DataGridViewRow = e.Data.GetData(GetType(DataGridViewRow))
 r.DataGridView.Rows.Remove(r)
 DataGridView2.Rows.Add(r)
 MsgBox(r.Cells(0).Value)
 Catch ex As Exception
 End Try
 End Sub

Opcja „DragDrop” również znajduje się w: Properties>>Events>>DragDrop

MsgBox(r.Cells(0).Value) – powoduje, że dostaniemy komunikat o tym który wiersz jest przenoszony, jeśli nie potrzebujemy tego komunikatu można go poprostu wykasować.

Ostatnią rzeczą jaką trzeba dodać jest kod:

Private Sub DataGridView2_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView2.DragEnter
 e.Effect = DragDropEffects.All
 End Sub

Opcje tą również można znaleść w: Properties>>Events>>DragEnter

Tak jak zawsze wklejam cały kod:

dandd2

plik z projektem można pobrac :draganddrop

Wszystkie pytania prosze kierować w komentarzach bądz na maila, niedługo pokarze jak zrobić funkcjonalny drag and drop z bazą danych.

Permalink do tego artykułu: https://visualmonsters.cba.pl/drag-and-drop/

Dodaj komentarz

Twój adres email nie będzie publikowany.