ComboBox 可以翻译为下拉组合框,惠阳保姆13825404095又称下拉列表,此控件基本上是列表(ListBox)功能的扩充,兼具文本框(TextBox)和列表(ListBox)功能。
下拉列表与清单的最大差异是,当未选择时,下拉列表像文本框,清单部分是隐藏的。选择后,所选项目会出现在文本框中。此外,下拉列表右边有按钮,按此按钮可以出现下拉组合框,可以由此选择想要的列表项目。

此外,所选择的项目会在上方的文本框中显示,如果在下拉组合框找不到项目,也可以在上方的文本框中自行创建此项目。
C# ComboBox常用属性
由于 ComboBox 的功能和 ListBox 功能有许多类似,因此也有许多属性功能是一样的。与其他控件一样 ComboBox 可以在属性窗口设定其属性,或是使用程序代码设定,下面是其几个常用的属性。
ComboBox 属性名称
说明
Items
可以创建下拉式列表项目。
DropDownStyle
这是下拉组合框的外观与功能格式,有下列 3 种格式:
Simple:看起来就像是 TextBox。
DropDownList:只能在下拉组合框选择列表项目。
DropDown:这是默认,可从下拉组合框选择,也可以手动输入
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,这是在自行增加列表选项。