* VB-CODE (4)
Tip 94: Using Drag-and-Drop on Multiple items in a List Box Control

May 22, 1995

Abstract
The drag-and-drop functionality provided in many Windows®-based
applications allows you to copy an item from one program to another
or from one control to another control in the same application. This
article explains how to use this drag-and-drop technique in Visual
Basic® to copy multiple items selected in a List Box control to
another List Box control.

Dragging Multiple list Box Items
Many Windows-based applications include drag-and-drop functionality.
This means that you can select an item, such as an entry in a List
Box control, click on the item, and, while holding the mouse button
down, drag that item to another window or control and drop it on its
new location.

The example program below shows how you can add this drag-and-drop
feature to your Visual Basic® applications. This program allows you
to select multiple items in the source List Box control and drag the
whole group of selected items to a second List Box control all at one
time.

Example Program
This program shows how to drag several items selected in one List Box
control to another List Box control. Run the example program by
pressing the F5 function key. From the first List Box control, click
the mouse on several items to select (highlight) them. While clicking
each item, hold down the SHIFT key. When you want to drag the selected
items to the second List Box control, click once on the first List Box
control and hold the mouse button down while you drag the control to
the second List Box. Release the mouse button to drop the selected
items onto the second List Box control.

While using this program, you can select the items from the first
List Box either by holding the SHIFT key down while you click on each
entry, or by simply clicking the mouse on each individual entry. If
you hold the SHIFT key down when selecting entries, those entries will
remain selected (highlighted) in the first List Box control after the
items have been dropped onto the second List Box control. If the
SHIFT key is not used, one of the selected items will not retain its
selected status after the drag-and-drop operation has finished.

 1. Create a new project in Visual Basic. Form1 is created by default.
 2. Add the following code to the General Declarations section of
    Form1:

Option Explicit
Dim IG As Integer
Dim LIG(20) As Integer
Dim LGlobal As Long
Const VK_SHIFT = &H10

 3. Add the following code to the Form_Load event for Form1:

Private Sub Form_Load()
    Dim X As Integer
    IG = 0
    For X = 0 To 9
        List1.AddItem "Item #" + Str$(X)
    Next X
    List1.DragMode = 0
    LGlobal = 99999
End Sub

 4. Add a List Box control to Form1. List1 is created by default. Set
    its MultiSelect property to 1-Simple.
 5. Add the following code to the MouseDown event for List1 (note that
    the Private line must be typed as a single line of code):

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single,
  Y As Single)
    LGlobal = List1.ListIndex
    For X = 1 To IG
        List1.Selected(LIG(X)) = True
    Next X
    List1.Drag
End Sub

 6. Add a second List Box control to Form1. List2 is created by
    default. Set its MultiSelect property to 1-Simple.
 7. Add the following code to the DragDrop event for List2:

Private Sub List2_DragDrop(Source As Control, X As Single, Y As Single)
    For X = 0 To List1.ListCount - 1
        If X = LGlobal Then
            List2.AddItem List1.List(X)
        Else
            If List1.Selected(X) Then
                List2.AddItem List1.List(X)
            End If
        End If
    Next X
    LGlobal = 99999
    IG = 0
End Sub

Additional References
Knowledge Base Q80187. "How to Drop Item into Specified Location in
   VB List Box."
Tip 50: Using Drag and Drop in List Box Controls


Return