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ć.
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
Teraz 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:
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.