ComboBox Control in VB.NET

A ComboBox control is a combination of a TextBox and a ListBox control. Only one list item is displayed at one time in a ComboBox and other available items are loaded in a drop down list.
  • 48324
 

A ComboBox control is a combination of a TextBox and a ListBox control. Only one list item is displayed at one time in a ComboBox and other available items are loaded in a drop down list.

Creating a ComboBox

We can create a ComboBox control using a Forms designer at design-time or using the ComboBox class in code at run-time (also known as dynamically).

To create a ComboBox control at design-time, you simply drag and drop a ComboBox control from Toolbox to a Form in Visual Studio. After you drag and drop a ComboBox on a Form, the ComboBox looks like Figure 1. Once a ComboBox is on the Form, you can move it around and resize it using mouse and set its properties and events.

 

ComboBoxImg1.jpg
Figure 1

Creating a ComboBox control at run-time is merely a work of creating an instance of ComboBox class, set its properties and adds ComboBox class to the Form controls.

First step to create a dynamic ComboBox is to create an instance of ComboBox class. The following code snippet creates a ComboBox control object.

Dim ComboBox1 As New ComboBox

 

In the next step, you may set properties of a ComboBox control. The following code snippet sets location, width, height, background color, foreground color, Text, Name, and Font properties of a ComboBox.

ComboBox1.Location = New System.Drawing.Point(12, 12)

ComboBox1.Name = "ComboBox1"

ComboBox1.Size = New System.Drawing.Size(245, 25)

ComboBox1.BackColor = System.Drawing.Color.Orange

ComboBox1.ForeColor = System.Drawing.Color.Black

 

Once the ComboBox control is ready with its properties, the next step is to add the ComboBox to a Form. To do so, we use Form.Controls.Add method that adds ComboBox control to the Form controls and displays on the Form based on the location and size of the control. The following code snippet adds a ComboBox control to the current Form.

 

Controls.Add(ComboBox1)

Setting ComboBox Properties

After you place a ComboBox control on a Form, the next step is to set properties.

The easiest way to set properties is from the Properties Window. You can open Properties window by pressing F4 or right click on a control and select Properties menu item. The Properties window looks like Figure 2.

 

ComboBoxImg2.jpg
Figure 2

Name

Name property represents a unique name of a ComboBox control. It is used to access the control in the code. The following code snippet sets and gets the name and text of a ComboBox control.

ComboBox1.Name = "ComboBox1"

Location, Height, Width and Size

The Location property takes a Point that specifies the starting position of the ComboBox on a Form. You may also use Left and Top properties to specify the location of a control from the left top corner of the Form.  The Size property specifies the size of the control. We can also use Width and Height property instead of Size property. The following code snippet sets Location, Width, and Height properties of a ComboBox control.

ComboBox1.Location = New System.Drawing.Point(12, 12)

ComboBox1.Size = New System.Drawing.Size(300, 25)

ComboBox1.Width = 300

ComboBox1.Height = 25

DropDownHeight and DropDownWidth

You can control the size of the dropdown area of a ComboBox. The DropDownHeight and DropDownWidth properties represent the height and width of the dropdown area in pixel respectively. If the DropDownWidth and DropDownHeight properties are less than the Width and Height values, they will not be applicable. If all the items do not fit in the size of the dropdown area, the scrollbars will appear as you can see from Figure 3.

 

 

ComboBoxImg3.jpg
Figure 3

The following code snippet sets the height and width of the dropdown area of a ComboBox.

 

ComboBox1.DropDownHeight = 50

ComboBox1.DropDownWidth = 300

Font

Font property represents the font of text of a ComboBox control. If you click on the Font property in Properties window, you will see Font name, size and other font options. The following code snippet sets Font property at run-ti

ComboBox1.Font = new Font("Georgia", 16)

Background and Foreground

BackColor and ForeColor properties are used to set background and foreground color of a ComboBox respectively. If you click on these properties in Properties window, the Color Dialog pops up.

Alternatively, you can set background and foreground colors at run-time. The following code snippet sets BackColor and ForeColor properties.

ComboBox1.BackColor = System.Drawing.Color.Orange

ComboBox1.ForeColor = System.Drawing.Color.Black

 

The new ComboBox with background and foreground looks like Figure 4.

 

 

ComboBoxImg4.jpg
Figure 4
 

ComboBox Items

The Items property is used to add and work with items in a ComboBox. We can add items to a ComboBox at design-time from Properties Window by clicking on Items Collection as you can see in Figure 5.

 

ComboBoxImg5.jpg
Figure 5

When you click on the Collections, the String Collection Editor window will pop up where you can type strings. Each line added to this collection will become a ComboBox item. I add four items as you can see from Figure 6.

 

 

ComboBoxImg6.jpg
Figure 6

The ComboBox looks like Figure 7.

 

ComboBoxImg7.jpg
Figure 7

You can add same items at run-time by using the following code snippet.

ComboBox1.Items.Add("Mahesh Chand")

ComboBox1.Items.Add("Mike Gold")

ComboBox1.Items.Add("Praveen Kumar")

ComboBox1.Items.Add("Raj Beniwal")

Getting All Items

To get all items, we use the Items property and loop through it to read all the items.  The following code snippet loops through all items and adds item contents to a StringBuilder and displays in a MessageBox.

Dim sb As New System.Text.StringBuilder

        For Each item In ComboBox1.Items

            sb.Append(item)

            sb.Append(" ")

        Next

MessageBox.Show(sb.ToString())

Selected Text and Item

Text property is used to set and get text of a ComboBox. The following code snippet sets and gets current text of a ComboBox.

ComboBox1.Text = "Mahesh Chand"

MessageBox.Show(ComboBox1.Text)

 

We can also get text associated with currently selected item by using Items property.

Dim selectedItem As String = ComboBox1.Items(ComboBox1.SelectedIndex)

Why the value of ComboBox.SelectedText is Empty?
SelectedText property gets and sets the selected text in a ComboBox only when a ComboBox has focus on it. If the focus moves away from a ComboBox, the value of SelectedText will be an empty string. To get current text in a ComboBox when it does not have focus, use Text property.

DataSource
DataSource property is used to get and set a data source to a ComboBox. The data source can be a collection or object that implements IList interface such as an array, a collection, or a DataSet. The following code snippet binds an enumeration converted to an array to a ComboBox.

ComboBox1.DataSource = System.Enum.GetValues(GetType(ComboBoxStyle))

DropDownStyle
DropDownStyle property is used to gets and sets the style of a ComboBox. It is a type of ComboBoxStyle enumeration.
The ComboBoxStyle enumeration has following three values.

  • Simple - List is always visible and the text portion is editable.
  • DropDown â€" List is displayed by clicking the down arrow and that the text portion is editable.
  • DropDownList - List is displayed by clicking the down arrow and that the text portion is not editable.

The following code snippet sets the DropDownStyle property of a ComboBox to DropDownList.

ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList

DroppedDown

If set true, the dropped down portion of the ComboBox is displayed. By default, this value is false.

Sorting Items

The Sorted property set to true, the ComboBox items are sorted. The following code snippet sorts the ComboBox items.

ComboBox1.Sorted = True

Find Items

The FindString method is used to find a string or substring in a ComboBox. The following code snippet finds a string in a ComboBox and selects it if found.

Private Sub FindStringButton_Click(ByVal sender As System.Object, _

    ByVal e As System.EventArgs) Handles FindStringButton.Click

        Dim index As Integer = ComboBox1.FindString(TextBox1.Text)

        If (index < 0) Then

            MessageBox.Show("Item not found.")

            TextBox1.Text = String.Empty

        Else

            ComboBox1.SelectedIndex = index

        End If

End Sub

AutoCompleteText

Most of the developers are familiar with the auto completion text feature available in browsers, search controls and other controls. The auto completion feature is when you start typing some characters in a control; the matching items are loaded automatically for you.

In Windows Forms 2.0 or later versions (Visual Studio 2005 or later versions), some of the controls support this feature including the ComboBox and the TextBox controls. By using these features, we can build Google search like auto completion functionality in our Windows Forms applications.

For example, we can have a ComboBox control that completes URLs as soon as you type any character. For example, in Figure 8, I typed "c-s" and I see all the URLs starting with "c-s".

 

ComboBoxImg8.jpg
Figure 8

The AutoCompleteSource and AutoCompleteMode properties of the TextBox and ComboBox controls allow developers to provide automatic completion text feature. You can set both of these properties at design-time as well as at run-time. If you click on AutoCompleteSource drop down, you will see all the options in the drop-down list. See Figure 9.

 

ComboBoxImg9.jpg
Figure 9

Figure 10 shows AutoCompleteMode options.

 

ComboBoxImg10.jpg
Figure 10

You can also set these properties at run-time using the following code:  

comboBox1.AutoCompleteSource = AutoCompleteSource.AllSystemSources;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;

The AutoCompleteSource Enumeration has following members:

  • AllSystemResources - Specifies the equivalent of FileSystem and AllUrl as the source. This is the default value when AutoCompleteMode has been set to a value other than the default.
  • AllUrl - Specifies the equivalent of HistoryList and RecentlyUsedList as the source.
  • CustomSource - Specifies strings from a built-in AutoCompleteStringCollection as the source.
  • FileSystem - Specifies the file system as the source. 
  • FileSystemDirectories - Specifies that only directory names and not file names will be automatically completed.
  • HistoryList - Includes the Uniform Resource Locators (URLs) in the history list.
  • ListItems - Specifies that the items of the ComboBox represent the source.
  • None - Specifies that no AutoCompleteSource is currently in use. This is the default value of AutoCompleteSource.
  • RecentlyUsedList - Includes the Uniform Resource Locators (URLs) in the list of those URLs most recently used.

The AutoCompleteMode enumeration has following members:

  • Append - Appends the remainder of the most likely candidate string to the existing characters, highlighting the appended characters.
  • None - Disables the automatic completion feature for the ComboBox and TextBox controls.
  • Suggest - Displays the auxiliary drop-down list associated with the edit control. This drop-down is populated with one or more suggested completion strings.
  • SuggestAppend - Applies both Suggest and Append options.

Loading Custom Source 

We can also specify a custom source from where the listing will be loaded. If you click on the AutoCompleteCustomSource property, it will open the String Collection Editor, where we can add our strings. For example, I add following strings to the strings list. See Figure 11.

 

ComboBoxImg11.jpg
Figure 11

Now we need to set AutoCompleteSource to CustomSource:

comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;

And when I run and type "v" in the combo box, I see VB.NET Heaven. See Figure 12.

 

ComboBoxImg12.jpg
Figure 12

We can also create AutoCompleteStringCollection programmatically. The following code creates an AutoCompleteStringCollection, adds strings to the collection, and sets it to the AutoCompleteCustomSource of the ComboBox. 

// AutoCompleteStringCollection
AutoCompleteStringCollection data = new AutoCompleteStringCollection();
data.Add("Mahesh Chand");
data.Add("Mac Jocky");
data.Add("Millan Peter");
comboBox1.AutoCompleteCustomSource = data;

Now running the sample and typing "m" in the ComboBox loads the data as shown in Figure 13.

 

ComboBoxImg13.jpg
Figure 13

ComboBox SelectedIndexChanged Event Hander

CheckedChanged and CheckStateChanged are two important events for a ComboBox control. The CheckedChanged event occurs when the value of the Checked property changes. The CheckStateChanged event occurs when the value of the CheckState property changes.

 

To add these event handlers, you go to Events window and double click on CheckedChanged and CheckedStateChanged events as you can see in Figure 14.

 

 


ComboBoxImg14.jpg
Figure 14

 

The following code snippet defines and implements these events and their respective event handlers.

 

AddHandler ComboBox1.SelectedIndexChanged, AddressOf ComboBox1SelectedIndexChanged

 

 

Private Sub ComboBox1SelectedIndexChanged(ByVal sender As System.Object, _

        ByVal e As System.EventArgs) Handles ComboBox3.SelectedIndexChanged

        MessageBox.Show(ComboBox1.Text)

End Sub

 

Summary

In this article, we discussed discuss how to create a ComboBox control in Windows Forms at design-time as well as run-ti After that, we saw how to use various properties and methods.

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.