下拉框 ComboBox 控件
下拉框是一种点击右侧按钮后展开选项列表的控件,用户可以选择其中一项或多项(取决于设置)。

可以通过右上角小三角直接输入选项,也可以在后台动态添加。
后台动态添加
在 Form1_Load 事件中动态添加项:
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
this.comboBox1.Items.Add("item" + i);
}
}Code language: JavaScript (javascript)


获取选择项
private void button6_Click(object sender, EventArgs e)
{
MessageBox.Show(this.comboBox1.SelectedItem.ToString());
MessageBox.Show(this.comboBox1.SelectedIndex.ToString());
}Code language: JavaScript (javascript)
| 属性 | 说明 |
|---|---|
SelectedItem | 获取当前选中的对象 |
SelectedIndex | 获取当前选中项的索引(从0开始,-1表示未选中) |
SelectedText | 获取下拉框中当前显示的文本 |
SelectedValue | 获取由 ValueMember 指定的值 |
绑定对象作为选项
实际开发中下拉框通常绑定对象,显示文本和实际值分开:
class ItemInfo
{
public string Key { set; get; }
public string Value { set; get; }
public override string ToString()
{
return Value;
}
}Code language: JavaScript (javascript)
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.DisplayMember = "Value"; // 设置显示的属性
this.comboBox1.ValueMember = "Key"; // 设置取值的属性
for (int i = 0; i < 10; i++)
{
this.comboBox1.Items.Add(new ItemInfo() { Key = i.ToString(), Value = "val" + i });
}
}Code language: JavaScript (javascript)
private void button6_Click(object sender, EventArgs e)
{
ItemInfo it = this.comboBox1.SelectedItem as ItemInfo;
MessageBox.Show(it.Key);
MessageBox.Show(it.Value);
}Code language: JavaScript (javascript)

常用属性
| 属性 | 说明 |
|---|---|
DropDownStyle | 下拉样式:DropDown(可输入)、DropDownList(只能选择) |
Items | 选项集合 |
DisplayMember | 绑定对象时显示的属性名 |
ValueMember | 绑定对象时取值的属性名 |
SelectedItem | 选中的对象 |
SelectedIndex | 选中项的索引 |
常用事件
| 事件 | 说明 |
|---|---|
SelectedIndexChanged | 选中项改变时触发 |
SelectionChangeCommitted | 用户确认选择改变时触发(区分代码设置) |
Previous: ColorDialog 颜色对话框
Next: ContextMenuStrip 右键菜单控件