Celem tego toturiala jest stworzenie formy w której będzie można przenosić komórki między jedną datagrid a drugą.
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
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ć.
1 2 3 4 5 6 |
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:
1 2 3 4 5 6 |
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
Teraz mamy możliwość przenoszenia naszych wierszy w naszym datagrid1.
Następnym naszym krokiem jest dodanie możliwości odbierania wierszy.
1 2 3 4 5 6 7 8 9 |
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:
1 2 3 |
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:
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.