C# Combox使用(comboBox)

设置不可编辑

将 DropDownStyle 属性设置为 DropDownList 即可

属性值解释:

  • Simple 简单的下拉列表框(始终显示列表)、
  • DropDown 可以编辑,与有下拉列表。默认.
  • DropDownList 只有下拉列表,不能编辑。

添加项目

fileLstBx.Items.Add(fileName);

获取选中的值

startHourCB.Text

判断项目是否存在

fileLstBx.Items.Contains(fileName)

判断项目不存在就添加

if(!fileLstBx.Items.Contains(fileName)) {
    fileLstBx.Items.Add(fileName);
}

获取项目的总数

fileLstBx.Items.Count

设置选中

方式一:

指定索引

startHourCB.SelectedIndex= 0;

索引二:

指定值

Combobox.SelectText = “默认选中文本”;

但是如果Combobox的DropDowStyle属性,选择为DropDownList则上面的方法就不能用了

用下面的方法比较好用

Combobox.SelectedIndex = Combobox.Items.IndexOf(“默认选中文本”);

https://blog.csdn.net/easyboot/article/details/68062196

遍历

方式一(推荐)

使用传统 for 语句遍历,麻烦啰嗦,但通用

for(int flbIndex = 0; flbIndex < fileLstBx.Items.Count; flbIndex++) 
{
    string file = fileLstBx.Items[flbIndex].ToString();
}

方式二

使用简单,但有些情况会报错

foreach (string file in fileLstBx.Items)

}

注意:使用该方式,不能操作 ListBox,如:设置选中、添加、删除等操作,否则报错,如下:

System.InvalidOperationException:“此枚举数绑定到的列表已被修改。仅在列表没有更改时才能使用枚举数。”

清空

fileLstBx.Items.Clear();

删除选中的项目

// 选中项的数量不为0时,就一直删除
while (fileLstBx.SelectedItems.Count > 0) {
    fileLstBx.Items.Remove(fileLstBx.SelectedItem);
}

绑定数据

给 ComboBox 指定数据时,通常像设置 HTML 的 <select> 控件那样,也就是 显示值 和 value值,实现方法有多种

绑定 List 类型

list里面一般是对象,这里为了简单,使用匿名对象

List<object> list = new List<object> {
    new { display = "求和", value = "sum" },
    new { display = "平均值",value = "avg" }
};

comboBox1.DataSource = list;
// 指定value值
comboBox1.ValueMember = "value";
// 指定显示值
comboBox1.DisplayMember = "display";

获取选中的value:

// 获取或设置由ValueMember 属性指定的成员属性的值
comboBox1.SelectedValue
// 获取或设置ComboBox 的可编辑部分中选定的文本
comboBox1.SelectedText

数据集 DataTable 绑定

这个比较常见,很简单,一般是从数据库中查询出来,很少像下面这样封装数据

DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("id");
DataColumn dc2 = new DataColumn("name");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);

DataRow dr1 = dt.NewRow();
dr1["id"] = "1";
dr1["name"] = "aaaaaa";

DataRow dr2 = dt.NewRow();
dr2["id"] = "2";
dr2["name"] = "bbbbbb";

dt.Rows.Add(dr1);
dt.Rows.Add(dr2);

comboBox1.DataSource = dt;
comboBox1.ValueMember = "id";
comboBox1.DisplayMember = "name";

绑定 Dictionary 类型数据(不推荐)

有点特殊,不能直接绑定,需要借助类BindingSource才可以完成绑定

Dictionary<int, string> kvDictonary = new Dictionary<int, string>();
kvDictonary.Add(1, "11111");
kvDictonary.Add(2, "22222");
kvDictonary.Add(3, "333333");

// 需要使用 BindingSource 类完成绑定
BindingSource bs = new BindingSource();
bs.DataSource = kvDictonary;
comboBox1.DataSource = bs;
// 指定value值
comboBox1.ValueMember = "Key";
// 指定显示值
comboBox1.DisplayMember = "Value";

参考:
https://www.cnblogs.com/xiaomihu-0001/p/11750273.html