How to make DropDown CheckListBox in

In my recent window application there is need to create a  Checklistbox that has drop down functionality ,So I make a user control with the help of checklistbox, textbox, button controls  and windows.form object that is so useful  for me. This  user controls have these features:

  1. Control  has drop down functionality
  2. Control show status of selected items like ‘All selected’,  ‘None selected’ and  ‘N items selected ‘.
  3. We able to set the length of dropdown list.
  4. We can bind items on design time or runtime. etc

How to make :

Add a user control in your application with the name ‘DropDownCheckedListBox’.

Add textbox, button, checkedlistbox controls in this user control set the position like picture 1.1

 Open code file and make some private variable and some public properties

   Private Const T_DisplayListSize As Integer = 6
    Private Const SelectNoneText As String = "(None Selected)"
    Private Const SelectAllText As String = "(All Selected)"
    Private Const SelectSomeText As String = "(Some Selected...)"
    Private Frm As Form
    Private LostFocus As Boolean
    Private CodeValue As String
    Private T_MustFill As Boolean
    Private Shared m_ChkItemsString As String
    Public Event DropDown()
    Public Shadows Event TextChanged()
    Public Event SetStatusPrompt(ByVal Sender As DropDownCheckedListBox)
    Public Event AllItemSelected(ByVal Sender As DropDownCheckedListBox)
 Public Event AllItemDeselected(ByVal Sender As DropDownCheckedListBox)<strong> </strong>

    Public properties :

 Make some public properties for set the itemslist and length of      

 dropdown list etc…


 Private dataList() As String
    Public Property Items() As String()
            Return dataList
        End Get
        Set(ByVal value As String())
            dataList = value
        End Set
    End Property
    Private ListSize As Integer
    Public Property DisplayListSize() As Integer
            Return ListSize
        End Get
        Set(ByVal value As Integer)
            ListSize = value
        End Set
    End Property
    Private T_DroppedDown As Boolean
    Public ReadOnly Property DroppedDown() As Boolean
            Return T_DroppedDown
        End Get
    End Property
    Private T_ListText As String
    Public ReadOnly Property ListText() As String
            Return T_ListText
        End Get
    End Property


 Public Sub New()
   End Sub
    Private Sub InitializeNew()
        Dim strTemp As String
        ListSize = T_DisplayListSize
        T_DroppedDown = False
        T_ListText = ""
        T_MustFill = False
        txt.Text = strTemp
        Frm = New Form
        With Frm
            .ShowInTaskbar = False
            .FormBorderStyle = FormBorderStyle.None
            .ControlBox = False
            .StartPosition = FormStartPosition.Manual
            .TopMost = True
            .Location = chkListBox.Location
            .Width = chkListBox.Width
        End With
    End Sub

Create mousedown event of btnDropDown button and call function listButtonClick on here.this is responsible for showing checkedListBox

Private Sub btnDropdown_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnDropdown.MouseDown
End Sub

We have already make two custom event one is TextChanged and another is DropDown, on here both event have been we can handles event when control changes its status(user check or uncheck item(s)).

Private Sub ListButtonClick()
        Dim strTemp As String
        strTemp = T_ListText
        If T_DroppedDown Then
            T_DroppedDown = False
            txt.Text = GetSelectedItems()
            If Not strTemp = T_ListText Then
                RaiseEvent TextChanged()
            End If
        ElseIf Not LostFocus Then
            T_DroppedDown = True
            RaiseEvent DropDown()
        End If
        LostFocus = False
    End Sub
Private Sub SetList()
        Dim oFrm As Form
        Dim oRect As Rectangle
        Dim oPt As Point
        If Frm IsNot Nothing Then
            Frm.Height = (ListSize * chkListBox.ItemHeight) + 3
            chkListBox.Height = Frm.Height
            chkListBox.Top = 0
            oFrm = Me.FindForm
            If oFrm IsNot Nothing Then
                oPt = Me.ParentForm.PointToClient(Me.PointToScreen(Point.Empty))
                oPt.Y = oPt.Y + Me.txt.Height
                oRect = oFrm.RectangleToScreen(oFrm.ClientRectangle)
                oPt.X = oPt.X + oRect.Left
                oPt.Y = oPt.Y + oRect.Top
                Frm.Location = oPt
            End If
            Frm.Width = chkListBox.Width
        End If
    End Sub


SetSize() function works for set the size of all controls if you can resize usercontrol.    

Private Sub SetSize()
        LostFocus = False
        txt.Width = Me.Width
        btnDropdown.Left = txt.Width - btnDropdown.Width - 2
        chkListBox.Width = Me.Width
        Me.Height = txt.Height
 End Sub

Working with control:

Build  your Application, the DropDownCheckedListBox should appear in your Visual Studio ToolBox and than you can drag and drop it on to your window Form

Add items on design time :

Click on items property, add strings  and click ok



You can download full source code sample 

You can apply more functionalities according your need in this user control…. You can download full source code sample

One thought on “How to make DropDown CheckListBox in”

  1. dear sir
    I’m using VB 2010 , Unfortunately,(drop down check
    list)your component doesn’t work in version of vb dot net .please, send me
    your component in vb dot net 2010.
    I need this component

    my email is: [email protected]

    best regards

Comments are closed.