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:
- Control has drop down functionality
- Control show status of selected items like ‘All selected’, ‘None selected’ and ‘N items selected ‘.
- We able to set the length of dropdown list.
- 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() Get Return dataList End Get Set(ByVal value As String()) dataList = value End Set End Property Private ListSize As Integer Public Property DisplayListSize() As Integer Get Return ListSize End Get Set(ByVal value As Integer) ListSize = value SetList() End Set End Property Private T_DroppedDown As Boolean Public ReadOnly Property DroppedDown() As Boolean Get Return T_DroppedDown End Get End Property Private T_ListText As String Public ReadOnly Property ListText() As String Get Return T_ListText End Get End Property
Public Sub New() InitializeComponent() InitializeNew() End Sub Private Sub InitializeNew() Dim strTemp As String ListSize = T_DisplayListSize T_DroppedDown = False T_ListText = "" T_MustFill = False txt.Text = strTemp chkListBox.Hide() Frm = New Form With Frm .ShowInTaskbar = False .FormBorderStyle = FormBorderStyle.None .ControlBox = False .StartPosition = FormStartPosition.Manual .TopMost = True .Location = chkListBox.Location .Width = chkListBox.Width .Controls.Add(chkListBox) End With SetSize() 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 ListButtonClick() End Sub
We have already make two custom event one is TextChanged and another is DropDown, on here both event have been raised.so 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() chkListBox.Hide() Frm.Hide() txt.Focus() If Not strTemp = T_ListText Then RaiseEvent TextChanged() End If ElseIf Not LostFocus Then T_DroppedDown = True SetSize() Frm.Show() chkListBox.Show() chkListBox.Focus() 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 SetList() 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
dear sir
hi
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: afagh.movassaghi@yahoo.com
best regards