C# Combox使用(comboBox) 作者:马育民 • 2023-11-14 22:33 • 阅读:10082 # 设置不可编辑 将 `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 的 `` 控件那样,也就是 **显示值** 和 **value值**,实现方法有多种 ### 绑定 List 类型 list里面一般是对象,这里为了简单,使用匿名对象 ``` List list = new List { 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 kvDictonary = new Dictionary(); 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 原文出处:http://malaoshi.top/show_1IX6bGlv92jn.html