Pengguna Windows jatuh ke dalam dua kategori umum: mereka yang lebih memilih untuk menggunakan keyboard dan mereka yang lebih memilih untuk menggunakan mouse. Programmer telah diajarkan untuk menjaga kebutuhan pengguna Keyboard dengan menyediakan shortcut, tetapi kebutuhan pengguna mouse sebagian besar telah diabaikan. Programmer cenderung menjadi pengguna keyboard, sehingga penekanan pada fitur keyboard lebih di utamakan.

Satu hal yang pengguna mouse harapkan adalah kemampuan untuk drag dan drop pada aplikasi yang digunakan. Jika kita melihat sebagian besar aplikasi utama di Windows, drag dan drop ada di mana-mana. Sebagai contoh, pengguna yang terbiasa drag dan drop file di Windows Explorer. Drag dan drop pada dasarnya sama seperti copy dan paste menggunakan mouse daripada keyboard. Oleh karena itu, pada artikel kali ini kita akan membahas bagaimana Implementasi drag and drop pada listbox Visual Basic.Net.
Syntax
Skenario sederhana dapat kita implementasikan pada sebuah listbox. dimana kita akan mengubah urutan dari item listbox dengan menggunakan drag and drop.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.AllowDrop = True
ListBox2.AllowDrop = True
End Sub
Private Sub listbox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown, ListBox2.MouseDown
Dim lst As ListBox = DirectCast(sender, ListBox)
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim index As Integer = lst.IndexFromPoint(e.X, e.Y)
If index <> ListBox.NoMatches Then
Dim item As String = lst.Items(index)
Dim drop_effect As DragDropEffects = lst.DoDragDrop(lst.Items(index), DragDropEffects.Move Or DragDropEffects.Copy)
If drop_effect = DragDropEffects.Move Then
If lst.Items(index) = item Then
lst.Items.RemoveAt(index)
Else
lst.Items.RemoveAt(index + 1)
End If
End If
End If
End If
End Sub
Private Sub listbox1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragOver, ListBox2.DragOver
If Not (e.Data.GetDataPresent(GetType(System.String))) Then
e.Effect = DragDropEffects.None
ElseIf (e.AllowedEffect And DragDropEffects.Move) = DragDropEffects.Move Then
e.Effect = DragDropEffects.Move
End If
End Sub
Private Sub listbox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop, ListBox2.DragDrop
If e.Data.GetDataPresent(GetType(System.String)) Then
If (e.Effect = DragDropEffects.Copy) Or (e.Effect = DragDropEffects.Move) Then
Dim lst As ListBox = DirectCast(sender, ListBox)
Dim item As Object = CType(e.Data.GetData(GetType(System.String)), System.Object)
Dim pt As Point = lst.PointToClient(New Point(e.X, e.Y))
Dim index As Integer = lst.IndexFromPoint(pt.X, pt.Y)
If index = ListBox.NoMatches Then
lst.Items.Add(item)
Else
lst.Items.Insert(index, item)
End If
End If
End If
End Sub
Kode diatas merupakan contoh sederhana mengenai Implementasi drag and drop pada listbox Visual Basic.Net, bisa dikembangkan lagi untuk kebutuhan lain.
No Comments
Leave a comment Cancel