Search Tools Links Login

MultiSelect ListBox (Adding and Removing Items) - For Absolute Beginners!


This tutorial demonstrates multiselect property of listbox as well as how to add and remove items properly. Absolute beginners will surely grasp this concept easily.

Original Author: M?ĀRNING

Code


Download the file and run it! In the meantime here's the code....
' Very Basic tutorial on multi-select property of listbox, how to add and remove items from it
' To add items to a list box, use "AddItem" method (See the form's Load event for an example)
' To Remove an item from list box, use "RemoveItems" method (see the command button's click event)
'
'  Multi-Select property of list box
'  0 - Mone   -> No multiselection feature, you can only select one item (this is the default)
'  1 - Simple  -> you can multiselect by clicking an item, and deselecting, by clicking also (see lstThing object)
'  2 - Extended -> Multiselect by combining mouse-click with either SHIFT key or CTRL     (see lstItems object)
'
' This is intended for absolute beginners.
' If you find this useful, please vote.
' thanks and if you have questions, just contact me.
' my email : cMorning30@hotmail.com
'
Option Explicit
Private Sub cmdBack_Click()
  Dim intSelect As Integer  ' declare a variable representing the index of the listbox
  intSelect = 0        ' of course, set it to 0, the starting point of its index value
                ' it's ok if you dont assign values, it will be set to its default value, which is 0
                ' but its always a good programming practice to assign values to a variable
  
  ' Loop inside the list box and test the item if it is selected
  While intSelect < (lstThings.ListCount)
    If lstThings.Selected(intSelect) = True Then
      lstItems.AddItem lstThings.List(intSelect)
      lstThings.RemoveItem intSelect
    Else
      intSelect = intSelect + 1  ' increment this by one, so we can move on the the next item in the list
    End If
  Wend
End Sub
Private Sub cmdExit_Click()
  Unload Me
End Sub
Private Sub cmdRemove_Click()
  Dim intSelect As Integer  ' declare a variable representing the index of the listbox
  intSelect = 0        ' of course, set it to 0, the starting point of its index value
                ' it's ok if you dont assign values, it will be set to its default value, which is 0
                ' but its always a good programming practice to assign values to a variable
  
  ' Loop inside the list box and test the item if it is selected
  While intSelect < (lstItems.ListCount)
    If lstItems.Selected(intSelect) = True Then
      lstThings.AddItem lstItems.List(intSelect)   'it is important to add the items first to the other listbox
                              ' otherwise, it will add the wrong value!
      lstItems.RemoveItem intSelect          ' then remove it from the original list box
    Else
      intSelect = intSelect + 1  ' increment this by one, so we can move on the the next item in the list
    End If
  Wend
' note that we can not use FOR Loop here because if we remove an
' item from the listbox, the listcount acually decreases by one,
' therefore making the FOR value inconsistent with the index.
' you may want try it, if want to experiment.
End Sub
Private Sub Form_Load()
  
  'Center the form
  Top = (Screen.Height - ScaleHeight) / 2
  Left = (Screen.Width - ScaleWidth) / 2
  
  ' Make sure that the SORTED Property of the list box is set to true, and the
  ' MULTISELECTED Property set to 2 - Extended, meaning you can multiselect by holding down SHIFT or CTRL key
  ' because you can't assign values to these properties at run time
  
  ' The other list box, named lstThings, has a multiselect property of 1 - Simple
  ' you'll know the difference between 1 and 2 once you run the program.
  
  'Initialize Items listbox
  With lstItems
    .AddItem "CPU"
    .AddItem "Monitor"
    .AddItem "Mouse"
    .AddItem "KeyBoard"
    .AddItem "Printer"
    .AddItem "Scanner"
  End With
End Sub
Private Sub Form_Unload(Cancel As Integer) ' this is a pretty straight-forward thing
  Dim intEx As Integer
  
  intEx = MsgBox("Are you sure you want to exit?", vbYesNo + vbCritical + vbDefaultButton1, "Exit")
  If intEx = vbYes Then    ' vbYes is a VB constant that has an integer equivalent
                ' that's the reason why we declared intEx as integer
    End
  Else
    Cancel = 1       ' set this to true so the form won't exit
  End If
End Sub
Private Sub txtAddItem_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then      ' Key was pressed
  If Trim(txtAddItem.Text) <> "" Then   ' check if textbox is empty
    lstItems.AddItem txtAddItem.Text  ' if not, add it to listbox
    txtAddItem.Text = ""        ' and set the textbox empty for another item
  Else
    MsgBox "Unable to add empty item.", vbOKOnly + vbCritical, "Add"
  End If
  txtAddItem.SetFocus
End If
End Sub

About this post

Posted: 2002-06-01
By: ArchiveBot
Viewed: 98 times

Categories

Visual Basic 6

Attachments

MultiSelec827815142002.zip
Posted: 9/3/2020 3:45:00 PM
Size: 3,842 bytes


Loading Comments ...

Comments

No comments have been added for this post.

You must be logged in to make a comment.