Nos sirve
para arrastrar objetos de un lugar a otro en esta ocasión nos enfocaremos a
arrastrar a través de dos listbox.
La interfaz de este es una
parecida a la siguiente;
Dos listbox y un label, los
dos listbox deben cambiarse la propiedad View a list, allowdrop a true.
Se utiliza el
siguiente código:
Public Class frmDrag_Drop
Private Sub
ListView_ItemDrag(ByVal sender As Object, ByVal e As _
System.Windows.Forms.ItemDragEventArgs)
Handles ListView1.ItemDrag, _
ListView2.ItemDrag
Dim myItem As ListViewItem
Dim myItems(sender.SelectedItems.Count - 1) As ListViewItem
Dim i As Integer = 0
'Loop aunque
la colección SelectedItems para la fuente.
For Each myItem In sender.SelectedItems
'Añadir el ListViewItem a la matriz de
ListViewItems.
myItems(i) = myItem
i =
i + 1
Next
'Crear un DataObject containg la matriz de
ListViewItems.
sender.DoDragDrop(New _
DataObject("System.Windows.Forms.ListViewItem()",
myItems), _
DragDropEffects.Move)
End Sub
Private Sub
ListView_DragEnter(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter, _
ListView2.DragEnter
'Comprobar si
la matriz DataFormat ListViewItem personalizado.
If e.Data.GetDataPresent("System.Windows.Forms.ListViewItem()")
Then
e.Effect = DragDropEffects.Move
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub
ListView_DragDrop(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop, _
ListView2.DragDrop
Dim myItem As ListViewItem
Dim myItems() As ListViewItem = e.Data.GetData("System.Windows.Forms.ListViewItem()")
Dim i As Integer = 0
For Each myItem In myItems
'Agregar el artículo a la lista de objetivos.
sender.Items.Add(myItems(i).Text)
'Eliminar el elemento de la lista de origen.
If sender Is ListView1 Then
ListView2.Items.Remove(ListView2.SelectedItems.Item(0))
Else
ListView1.Items.Remove(ListView1.SelectedItems.Item(0))
End If
i =
i + 1
Next
End Sub
Este es el link para descargar el programa ya funcional.
No hay comentarios:
Publicar un comentario