How to enable the user to drag and drop items between two list boxes
Posted on July 29, 2011
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 'Controls - How to enable the user to drag and drop items between two list boxes 'Add two listboxes to your form, and insert the following code. Private Sub Form_Load() ' Populate the list List1.AddItem "James" List1.AddItem "Frederick" List1.AddItem "Ann" List1.AddItem "Paul" List1.AddItem "Sarah" List1.OLEDropMode = 1 List2.OLEDropMode = 1 End Sub 'Code managing dropping from list one to list two Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) List1.OLEDrag ' Begin dragging End Sub Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long) ' Only allow moves AllowedEffects = vbDropEffectMove 'Assign the ListBox selection to the DataObject Data.SetData List1 End Sub Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim strList As String ' Check the format of the DataObject If Not Data.GetFormat(vbCFText) Then Exit Sub ' Retrieve the text from the DataObject strList = Data.GetData(vbCFText) ' If the item was not dropped on itself If Not strList = List2.Text Then List2.AddItem strList 'Remove the item from the ListBox List1.RemoveItem List1.ListIndex End If End Sub ' Code managing dropping from list one' to list two' Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) List2.OLEDrag ' Begin dragging End Sub Private Sub List2_OLEStartDrag(Data As DataObject, AllowedEffects As Long) ' Only allow moves AllowedEffects = vbDropEffectMove ' Assign the ListBox selection to the DataObject Data.SetData List2 End Sub Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, _ Y As Single) Dim strList As String ' Check the format of the DataObject If Not Data.GetFormat(vbCFText) Then Exit Sub ' Retrieve the text from the DataObject strList = Data.GetData(vbCFText) ' If the item was not dropped on itself If Not strList = List1.Text Then List1.AddItem strList 'Remove the item from the ListBox List2.RemoveItem List2.ListIndex End If End Sub |