C# ComboBox下拉列表的用法(附带实例)
ComboBox 可以翻译为下拉组合框,又称下拉列表,此控件基本上是列表(ListBox)功能的扩充,兼具文本框(TextBox)和列表(ListBox)功能。
下拉列表与清单的最大差异是,当未选择时,下拉列表像文本框,清单部分是隐藏的。选择后,所选项目会出现在文本框中。此外,下拉列表右边有按钮,按此按钮可以出现下拉组合框,可以由此选择想要的列表项目。
此外,所选择的项目会在上方的文本框中显示,如果在下拉组合框找不到项目,也可以在上方的文本框中自行创建此项目。
【实例 1】在 ComboBox 创建选择列表项目,其下方使用标签列出所选的项目。
【实例 2】结账系统,这个程序可以点选 cboCoffee 下拉组合框的咖啡品项,然后右边会跳出单价,这个 cboCoffee 无法自行增加品项,所以设计时采用 DropDownList 属性,可以参考程序第 17 行的设定。当选择咖啡品项后,可以选择 cboNumber 下拉组合框的数量,这个 cboNumber 可以自行增加数量,所以设计时采用默认的 DropDown 属性。单击“结账”按钮,可以结账。单击“清除”按钮,可以复原程序执行初的设定。
上方右下图是在数量字段,笔者输入 10,这是在自行增加列表选项。
下拉列表与清单的最大差异是,当未选择时,下拉列表像文本框,清单部分是隐藏的。选择后,所选项目会出现在文本框中。此外,下拉列表右边有按钮,按此按钮可以出现下拉组合框,可以由此选择想要的列表项目。

此外,所选择的项目会在上方的文本框中显示,如果在下拉组合框找不到项目,也可以在上方的文本框中自行创建此项目。
C# ComboBox常用属性
由于 ComboBox 的功能和 ListBox 功能有许多类似,因此也有许多属性功能是一样的。与其他控件一样 ComboBox 可以在属性窗口设定其属性,或是使用程序代码设定,下面是其几个常用的属性。ComboBox 属性名称 | 说明 |
---|---|
Items | 可以创建下拉式列表项目。 |
DropDownStyle |
这是下拉组合框的外观与功能格式,有下列 3 种格式:
|
DroppedDown | 程序设计阶段才可以使用,如果是 True 会主动显示下拉组合框,默认是 False |
MaxDropDownItems | 下拉组合框显示的列表项目数量,超出此数量时会有滚动条 |
MaxLength | 指定下拉组合框中最大的字符数目 |
Text | 下拉组合框上方文本框的内容 |
C# ComboBox事件
设计 ComboBox 时常用的事件有下列两种:- SelectedIndexChanged 事件:当选取下拉组合框项目改变时会产生此事件,这时可以用 Text 属性取得新选取的项目;
- TextChanged 事件:当选择项目改变时,会产生此事件。另外,手动输入项目时也会产生此事件。
【实例 1】在 ComboBox 创建选择列表项目,其下方使用标签列出所选的项目。

控件 | 名称 (Name) | 标题 (Text) | 大小 (Size) | 位置 (Location) |
---|---|---|---|---|
Form | Form1 | ch30_23 | (400, 250) | (0, 0) |
ComboBox | comboBox1 | (198, 31) | (90, 26) | |
Label | label1 | 尚未选取 | (82, 23) | (148, 140) |
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { label1.Text = comboBox1.Text; } private void Form1_Load(object sender, EventArgs e) { string[] cards = { "金卡会员", "银卡会员", "普通卡会员" }; comboBox1.Items.AddRange(cards); // 创建列表项目 } }执行结果为:

【实例 2】结账系统,这个程序可以点选 cboCoffee 下拉组合框的咖啡品项,然后右边会跳出单价,这个 cboCoffee 无法自行增加品项,所以设计时采用 DropDownList 属性,可以参考程序第 17 行的设定。当选择咖啡品项后,可以选择 cboNumber 下拉组合框的数量,这个 cboNumber 可以自行增加数量,所以设计时采用默认的 DropDown 属性。单击“结账”按钮,可以结账。单击“清除”按钮,可以复原程序执行初的设定。

控件 | 名称 (Name) | 标题 (Text) | 大小 (Size) | 位置 (Location) |
---|---|---|---|---|
Form | Form1 | ch30_24 | (560, 330) | (0, 0) |
Label | label1 | 品项 | (46, 23) | (77, 39) |
Label | label2 | 单价 | (46, 23) | (380, 39) |
Label | labUnitPrice | 0 | (23, 23) | (432, 39) |
Label | label4 | 数量 | (46, 23) | (77, 99) |
Label | label5 | 总金额 | (64, 23) | (362, 152) |
Label | lblTotal | 0 | (20, 23) | (432, 152) |
Button | button1 | 结账 | (112, 34) | (127, 201) |
Button | button2 | 清除 | (112, 34) | (300, 201) |
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string[] coffees = { "尚未选择", "义式咖啡", "美式咖啡", "拿铁" }; cboCoffee.Items.AddRange(coffees); // 创建咖啡项目 // 咖啡品项无法更改 DropDownList cboCoffee.DropDownStyle = ComboBoxStyle.DropDownList; cboCoffee.SelectedIndex = 0; // 显示索引 0 for (int i = 0; i <= 5; i++) // 建立数量项目 cboNumber.Items.Add(i.ToString()); cboNumber.SelectedIndex = 0; // 显示索引 0 } private void button2_Click(object sender, EventArgs e) { // 按清除钮执行 cboCoffee.SelectedIndex = 0; // 创建索引 0 cboNumber.SelectedIndex = 0; // 创建索引 0 lblUnitPrice.Text = "0"; // 创建单价 lblTotal.Text = "0"; // 显示总金额 } private void cboCoffee_SelectedIndexChanged(object sender, EventArgs e) { if (cboCoffee.Text.Equals("义式咖啡")) lblUnitPrice.Text = "120"; else if (cboCoffee.Text.Equals("美式咖啡")) lblUnitPrice.Text = "100"; else if (cboCoffee.Text.Equals("拿铁")) lblUnitPrice.Text = "150"; } private void button1_Click(object sender, EventArgs e) { // 结账 int n = Convert.ToInt32(cboNumber.Text); // 单价 int u = Convert.ToInt32(lblUnitPrice.Text); // 数量 lblTotal.Text = (n * u).ToString(); // 总价 } }执行结果为:

上方右下图是在数量字段,笔者输入 10,这是在自行增加列表选项。