Export (0) Print
Expand All

ComboBox Class

Represents a Windows combo box control.

For a list of all members of this type, see ComboBox Members.

System.Object
   System.MarshalByRefObject
      System.ComponentModel.Component
         System.Windows.Forms.Control
            System.Windows.Forms.ListControl
               System.Windows.Forms.ComboBox

[Visual Basic]
Public Class ComboBox
   Inherits ListControl
[C#]
public class ComboBox : ListControl
[C++]
public __gc class ComboBox : public ListControl
[JScript]
public class ComboBox extends ListControl

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Remarks

A ComboBox displays an editing field combined with a ListBox, allowing the user to select from the list or to enter new text. The default behaviour of ComboBox displays an edit field with a hidden drop-down list. The DropDownStyle property determines the style of combo box to display. You can enter a value that allows for a simple drop-down, where the list always displays, a drop-down list box, where the text portion is not editable and you must select an arrow to view the drop-down list box, or the default drop-down list box, where the text portion is editable and the user must press the arrow key to view the list. To always display a list that the user cannot edit, use a ListBox control.

To add objects to the list at run time, assign an array of object references with the AddRange method. The list then displays the default string value for each object. You can add individual objects with the Add method.

In addition to display and selection functionality, the ComboBox also provides features that enable you to efficiently add items to the ComboBox and to find text within the items of the list. The BeginUpdate and EndUpdate methods enable you to add a large number of items to the ComboBox without the control being repainted each time an item is added to the list. The FindString and FindStringExact methods enable you to search for an item in the list that contains a specific search string.

You can use these properties to manage the currently selected item in the list, the Text property to specify the string displayed in the editing field, the SelectedIndex property to get or set the current item, and the SelectedItem property to get or set a reference to the object.

Example

[Visual Basic, C#, C++] The following example is a complete application illustrating how you can use the Add method to add items to a ComboBox, the FindString method to find items in a ComboBox, and the BeginUpdate and EndUpdate methods to add a large number items to a ComboBox in an efficient manner.

[Visual Basic] 
Imports System
Imports System.Windows.Forms

Namespace ComboBoxSampleNamespace

    Public Class ComboBoxSample
        Inherits System.Windows.Forms.Form

        Private addButton As System.Windows.Forms.Button
        Private textBox2 As System.Windows.Forms.TextBox
        Private addGrandButton As System.Windows.Forms.Button
        Private comboBox1 As System.Windows.Forms.ComboBox
        Private showSelectedButton As System.Windows.Forms.Button
        Private textBox1 As System.Windows.Forms.TextBox
        Private findButton As System.Windows.Forms.Button
        Private label1 As System.Windows.Forms.Label

        Public Sub New()
            MyBase.New()
            Me.InitializeComponent()
        End Sub

        <System.STAThreadAttribute()> Public Shared Sub Main()
            System.Windows.Forms.Application.Run(New ComboBoxSample())
        End Sub

        Private Sub InitializeComponent()
            Me.addButton = New System.Windows.Forms.Button()
            Me.textBox2 = New System.Windows.Forms.TextBox()
            Me.addGrandButton = New System.Windows.Forms.Button()
            Me.comboBox1 = New System.Windows.Forms.ComboBox()
            Me.showSelectedButton = New System.Windows.Forms.Button()
            Me.textBox1 = New System.Windows.Forms.TextBox()
            Me.findButton = New System.Windows.Forms.Button()
            Me.label1 = New System.Windows.Forms.Label()
            Me.addButton.Location = New System.Drawing.Point(248, 32)
            Me.addButton.Size = New System.Drawing.Size(40, 24)
            Me.addButton.TabIndex = 1
            Me.addButton.Text = "Add"
            AddHandler Me.addButton.Click, AddressOf Me.addButton_Click
            Me.textBox2.Location = New System.Drawing.Point(8, 64)
            Me.textBox2.Size = New System.Drawing.Size(232, 20)
            Me.textBox2.TabIndex = 6
            Me.textBox2.Text = ""
            Me.addGrandButton.Location = New System.Drawing.Point(8, 96)
            Me.addGrandButton.Size = New System.Drawing.Size(280, 23)
            Me.addGrandButton.TabIndex = 2
            Me.addGrandButton.Text = "Add 1,000 Items"
            AddHandler Me.addGrandButton.Click, AddressOf Me.addGrandButton_Click
            Me.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
                        Or System.Windows.Forms.AnchorStyles.Right)
            Me.comboBox1.DropDownWidth = 280
            Me.comboBox1.Items.AddRange(New Object() {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"})
            Me.comboBox1.Location = New System.Drawing.Point(8, 248)
            Me.comboBox1.Size = New System.Drawing.Size(280, 21)
            Me.comboBox1.TabIndex = 7
            Me.showSelectedButton.Location = New System.Drawing.Point(8, 128)
            Me.showSelectedButton.Size = New System.Drawing.Size(280, 24)
            Me.showSelectedButton.TabIndex = 4
            Me.showSelectedButton.Text = "What Item is Selected?"
            AddHandler Me.showSelectedButton.Click, AddressOf Me.showSelectedButton_Click
            Me.textBox1.Location = New System.Drawing.Point(8, 32)
            Me.textBox1.Size = New System.Drawing.Size(232, 20)
            Me.textBox1.TabIndex = 5
            Me.textBox1.Text = ""
            Me.findButton.Location = New System.Drawing.Point(248, 64)
            Me.findButton.Size = New System.Drawing.Size(40, 24)
            Me.findButton.TabIndex = 3
            Me.findButton.Text = "Find"
            AddHandler Me.findButton.Click, AddressOf Me.findButton_Click
            Me.label1.Location = New System.Drawing.Point(8, 224)
            Me.label1.Size = New System.Drawing.Size(144, 23)
            Me.label1.TabIndex = 0
            Me.label1.Text = "Test ComboBox"
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(292, 273)
            Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.comboBox1, Me.textBox2, Me.textBox1, Me.showSelectedButton, Me.findButton, Me.addGrandButton, Me.addButton, Me.label1})
            Me.Text = "ComboBox Sample"
        End Sub

        Private Sub addButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            comboBox1.Items.Add(textBox1.Text)
        End Sub

        Private Sub findButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim index As Integer
            index = comboBox1.FindString(textBox2.Text)
            comboBox1.SelectedIndex = index
        End Sub

        Private Sub addGrandButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            comboBox1.BeginUpdate()
            Dim I As Integer
            For I = 0 To 1000
                comboBox1.Items.Add("Item 1" + i.ToString())
            Next
            comboBox1.EndUpdate()
        End Sub

        Private Sub showSelectedButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim selectedIndex As Integer
            selectedIndex = comboBox1.SelectedIndex
            Dim selectedItem As Object
            selectedItem = comboBox1.SelectedItem

            MessageBox.Show("Selected Item Text: " & selectedItem.ToString() & Microsoft.VisualBasic.Constants.vbCrLf & _
                                "Index: " & selectedIndex.ToString())
        End Sub
    End Class
End Namespace

[C#] 
using System;
using System.Windows.Forms;

namespace Win32Form1Namespace {
    
    
    public class Win32Form1 : System.Windows.Forms.Form {
        private System.Windows.Forms.Button addButton;
        private System.Windows.Forms.TextBox textBox2;
        private System.Windows.Forms.Button addGrandButton;
        private System.Windows.Forms.ComboBox comboBox1;
        private System.Windows.Forms.Button showSelectedButton;
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Button findButton;
        private System.Windows.Forms.Label label1;
        
        public Win32Form1() {
            this.InitializeComponent();
        }
        
        [System.STAThreadAttribute()]
        public static void Main() {
            System.Windows.Forms.Application.Run(new Win32Form1());
        }
        
        private void InitializeComponent() {
            this.addButton = new System.Windows.Forms.Button();
            this.textBox2 = new System.Windows.Forms.TextBox();
            this.addGrandButton = new System.Windows.Forms.Button();
            this.comboBox1 = new System.Windows.Forms.ComboBox();
            this.showSelectedButton = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.findButton = new System.Windows.Forms.Button();
            this.label1 = new System.Windows.Forms.Label();
            this.addButton.Location = new System.Drawing.Point(248, 32);
            this.addButton.Size = new System.Drawing.Size(40, 24);
            this.addButton.TabIndex = 1;
            this.addButton.Text = "Add";
            this.addButton.Click += new System.EventHandler(this.addButton_Click);
            this.textBox2.Location = new System.Drawing.Point(8, 64);
            this.textBox2.Size = new System.Drawing.Size(232, 20);
            this.textBox2.TabIndex = 6;
            this.textBox2.Text = "";
            this.addGrandButton.Location = new System.Drawing.Point(8, 96);
            this.addGrandButton.Size = new System.Drawing.Size(280, 23);
            this.addGrandButton.TabIndex = 2;
            this.addGrandButton.Text = "Add 1,000 Items";
            this.addGrandButton.Click += new System.EventHandler(this.addGrandButton_Click);
            this.comboBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
                        | System.Windows.Forms.AnchorStyles.Right);
            this.comboBox1.DropDownWidth = 280;
            this.comboBox1.Items.AddRange(new object[] {"Item 1",
                        "Item 2",
                        "Item 3",
                        "Item 4",
                        "Item 5"});
            this.comboBox1.Location = new System.Drawing.Point(8, 248);
            this.comboBox1.Size = new System.Drawing.Size(280, 21);
            this.comboBox1.TabIndex = 7;
            this.showSelectedButton.Location = new System.Drawing.Point(8, 128);
            this.showSelectedButton.Size = new System.Drawing.Size(280, 24);
            this.showSelectedButton.TabIndex = 4;
            this.showSelectedButton.Text = "What Item is Selected?";
            this.showSelectedButton.Click += new System.EventHandler(this.showSelectedButton_Click);
            this.textBox1.Location = new System.Drawing.Point(8, 32);
            this.textBox1.Size = new System.Drawing.Size(232, 20);
            this.textBox1.TabIndex = 5;
            this.textBox1.Text = "";
            this.findButton.Location = new System.Drawing.Point(248, 64);
            this.findButton.Size = new System.Drawing.Size(40, 24);
            this.findButton.TabIndex = 3;
            this.findButton.Text = "Find";
            this.findButton.Click += new System.EventHandler(this.findButton_Click);
            this.label1.Location = new System.Drawing.Point(8, 224);
            this.label1.Size = new System.Drawing.Size(144, 23);
            this.label1.TabIndex = 0;
            this.label1.Text = "Test ComboBox";
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 273);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {this.comboBox1,
                        this.textBox2,
                        this.textBox1,
                        this.showSelectedButton,
                        this.findButton,
                        this.addGrandButton,
                        this.addButton,
                        this.label1});
            this.Text = "ComboBox Sample";
        }
        
        private void addButton_Click(object sender, System.EventArgs e) {
           comboBox1.Items.Add(textBox1.Text);
        }

        private void addGrandButton_Click(object sender, System.EventArgs e) {
            comboBox1.BeginUpdate();
            for (int i = 0; i < 1000; i++) {
                comboBox1.Items.Add("Item 1" + i.ToString());
            }
            comboBox1.EndUpdate();
        }

        private void findButton_Click(object sender, System.EventArgs e) {
            int index = comboBox1.FindString(textBox2.Text);
            comboBox1.SelectedIndex = index;
        }

        private void showSelectedButton_Click(object sender, System.EventArgs e) {
            int selectedIndex = comboBox1.SelectedIndex;
            Object selectedItem = comboBox1.SelectedItem;

            MessageBox.Show("Selected Item Text: " + selectedItem.ToString() + "\n" +
                            "Index: " + selectedIndex.ToString());
        }
    }
}

[C++] 

using namespace System;
using namespace System::Windows::Forms;

namespace Win32Form1Namespace {

public __gc class Win32Form1 : public System::Windows::Forms::Form {

private:
    System::Windows::Forms::Button* addButton;
    System::Windows::Forms::TextBox* textBox2;
    System::Windows::Forms::Button* addGrandButton;
    System::Windows::Forms::ComboBox* comboBox1;
    System::Windows::Forms::Button* showSelectedButton;
    System::Windows::Forms::TextBox* textBox1;
    System::Windows::Forms::Button* findButton;
    System::Windows::Forms::Label* label1;

public:
    Win32Form1() {
        this->InitializeComponent();
    }

private:
    void InitializeComponent() {
        this->addButton = new System::Windows::Forms::Button();
        this->textBox2 = new System::Windows::Forms::TextBox();
        this->addGrandButton = new System::Windows::Forms::Button();
        this->comboBox1 = new System::Windows::Forms::ComboBox();
        this->showSelectedButton = new System::Windows::Forms::Button();
        this->textBox1 = new System::Windows::Forms::TextBox();
        this->findButton = new System::Windows::Forms::Button();
        this->label1 = new System::Windows::Forms::Label();
        this->addButton->Location = System::Drawing::Point(248, 32);
        this->addButton->Size = System::Drawing::Size(40, 24);
        this->addButton->TabIndex = 1;
        this->addButton->Text = S"Add";
        this->addButton->Click += new System::EventHandler(this, &Win32Form1::addButton_Click);
        this->textBox2->Location = System::Drawing::Point(8, 64);
        this->textBox2->Size = System::Drawing::Size(232, 20);
        this->textBox2->TabIndex = 6;
        this->textBox2->Text = S"";
        this->addGrandButton->Location = System::Drawing::Point(8, 96);
        this->addGrandButton->Size = System::Drawing::Size(280, 23);
        this->addGrandButton->TabIndex = 2;
        this->addGrandButton->Text = S"Add 1, 000 Items";
        this->addGrandButton->Click += new System::EventHandler(this, &Win32Form1::addGrandButton_Click);
        this->comboBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>(
            (System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Left) 
            | System::Windows::Forms::AnchorStyles::Right);
        this->comboBox1->DropDownWidth = 280;
        Object* objectArray[] = {S"Item 1",
            S"Item 2",
            S"Item 3",
            S"Item 4",
            S"Item 5"};
        this->comboBox1->Items->AddRange(objectArray);
        this->comboBox1->Location = System::Drawing::Point(8, 248);
        this->comboBox1->Size = System::Drawing::Size(280, 21);
        this->comboBox1->TabIndex = 7;
        this->showSelectedButton->Location = System::Drawing::Point(8, 128);
        this->showSelectedButton->Size = System::Drawing::Size(280, 24);
        this->showSelectedButton->TabIndex = 4;
        this->showSelectedButton->Text = S"What Item is Selected?";
        this->showSelectedButton->Click += new System::EventHandler(this, &Win32Form1::showSelectedButton_Click);
        this->textBox1->Location = System::Drawing::Point(8, 32);
        this->textBox1->Size = System::Drawing::Size(232, 20);
        this->textBox1->TabIndex = 5;
        this->textBox1->Text = S"";
        this->findButton->Location = System::Drawing::Point(248, 64);
        this->findButton->Size = System::Drawing::Size(40, 24);
        this->findButton->TabIndex = 3;
        this->findButton->Text = S"Find";
        this->findButton->Click += new System::EventHandler(this, &Win32Form1::findButton_Click);
        this->label1->Location = System::Drawing::Point(8, 224);
        this->label1->Size = System::Drawing::Size(144, 23);
        this->label1->TabIndex = 0;
        this->label1->Text = S"Test ComboBox";
        this->AutoScaleBaseSize = System::Drawing::Size(5, 13);
        this->ClientSize = System::Drawing::Size(292, 273);
        System::Windows::Forms::Control* controlsArray[] = {this->comboBox1,
            this->textBox2,
            this->textBox1,
            this->showSelectedButton,
            this->findButton,
            this->addGrandButton,
            this->addButton,
            this->label1};
        this->Controls->AddRange(controlsArray);
        this->Text = S"ComboBox Sample";
    }


    void addButton_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
        comboBox1->Items->Add(textBox1->Text);
    }

    void addGrandButton_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
        comboBox1->BeginUpdate();
        for (int i = 0; i < 1000; i++) {
            comboBox1->Items->Add(String::Concat(S"Item 1 ", i.ToString()));
        }
        comboBox1->EndUpdate();
    }

    void findButton_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
        int index = comboBox1->FindString(textBox2->Text);
        comboBox1->SelectedIndex = index;
    }

    void showSelectedButton_Click(Object* /*sender*/, System::EventArgs* /*e*/) {
        int selectedIndex = comboBox1->SelectedIndex;
        Object* selectedItem = comboBox1->SelectedItem;

        MessageBox::Show(String::Concat(S"Selected Item Text: ", selectedItem->ToString(),
            S"\n Index: ", selectedIndex.ToString()));
    }
};

}
[System::STAThreadAttribute]
int main() {
    System::Windows::Forms::Application::Run(new Win32Form1Namespace::Win32Form1());
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Windows.Forms

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

Assembly: System.Windows.Forms (in System.Windows.Forms.dll)

See Also

ComboBox Members | System.Windows.Forms Namespace

Show:
© 2014 Microsoft