La Web del Programador: Comunidad de Programadores
 
    Pregunta:  13164 - ARASTRAR UN ELEMENTO DE UNA LISTA A OTRA LISTA
Autor:  Mike Hammer
Hola:

Tengo un problema:

Como puedo arastrar un elemento que selecciono de un control listbox y pasarlo a otro listbox?

Gracias

  Respuesta:  JOSE ANTONIO
Hola Mike. La respuesta a tu pregunta es sencilla. Antes de nada decirte que mires en la ayuda de Visual Basic lo relacionado con Drag&Drop (Arrastrar y Soltar), que es la operación que tú quieres hacer.
Esta operación se puede hacer prácticamente con casi todos los controles de VB, aparte de que con 3 líneas de código lo habrás conseguido.
Los Eventos que tienes que usar son 2:
DRAGOVER (Cuando el objeto origen se desplaza sobre el control)
DRAGDROP (Cuando el objeto es soltado sobre un control).

Bien, imagina que tenemos dos listas: List1 y List2 y que queremos arrastrar un objeto desde List1 hasta List2.
Al pinchar un item en List1, ejecutamos el evento "MouseDown", que es donde comienza todo. En éste evento ponemos el icono que queramos para la operación de arrastre, fijamos las propiedades necesarias para saber todo lo que estamos haciendo y comenzamos la operación de arrastre; ésto se hace con la siguiente línea:
- List1.Drag vbBeginDrag 'inicia una operación de arrastre.
A partir de aquí, los eventos que nos interesan (para TODOS los objetos del Formulario, incluido éste) son los dos mencionado más arriba.
para cada objeto del formulario hemos de comprobar, primero, el evento DragOver para saber cuándo pasa el objeto por encima. Esto nos puede servir para, por ejemplo, poner un icono de prohibido si dicho objeto no puede ser destino de una operación de este tipo, o cualquier otra cosa que se nos ocurra.
Después, cuando un "algo" se "suelta" sobre un objeto, ocurre el evento DRAGDROP, mediante el cual terminamos la acción de arrastrar y SOLTAR algo sobre algo (en nuestro caso, y dentro del evento dragdrop de List2: Hacer lo que corresponda y "List1.Drag vbEndDrag" 'termina una operación de arrastre).
En fin, no recuerdo muy bien si era exactamente así, pero ya tienes unos cuantos eventos y unos valores para empezar a buscar. Espero haberte ayudado, un saludo.