Para esto necesitamos 2 controles Listview, dejar sus propiedades AllowDrop en True, MultiSelect a True y View a List.
Escribimos el siguiente código:
Private Sub ListView_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag, ListView2.ItemDrag Dim objItem As ListViewItem 'Creamos un array de ListViewItem Dim objItems(sender.SelectedItems.Count - 1) As ListViewItem Dim i As Integer = 0 'Recorremos los items seleccionados y los agreagamos a nuestro array For Each objItem In sender.SelectedItems 'aqui los vamos agregando objItems(i) = objItem i = i + 1 Next 'Creamos un DataObject que contendrá el array sender.DoDragDrop(New _ DataObject("System.Windows.Forms.ListViewItem()", objItems), _ DragDropEffects.Move) End Sub Private Sub ListView_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter, ListView2.DragEnter 'Verificamos el formato de la data del array 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 objItem As ListViewItem Dim objItems() As ListViewItem = e.Data.GetData("System.Windows.Forms.ListViewItem()") Dim i As Integer = 0 For Each objItem In objItems 'Agregamos el item a la lista. sender.Items.Add(objItems(i).Text) 'Borramos el item 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 Private Sub frmListToList_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For i As Integer = 1 To 9 ListView1.Items.Add("Texto " & i) Next End Sub
De esta forma entonces podremos arrastrar elementos de una lista a otra.
No hay comentarios:
Publicar un comentario