下面介绍三种对comboBox绑定的方式,分别是泛型中List和Dictionary,还有数据集DataTable
一、List
现在我们直接创建一个List集合,然后绑定
1 List<string> liStr = new List<string>(); 2 liStr.Add("1"); 3 liStr.Add("2"); 4 liStr.Add("3"); 5 cboBindValue.DataSource = liStr;
List
执行后,我们会发现绑定成功,但是 我们知道一般对于下拉框的绑定都会有一个值,一个显示的内容,这个时候我们可以创建一个类,把value和text都封装到这个类,作为list的类型
1 public class Info 2 { 3 public string Id { get; set; } 4 public string Name { get; set; } 5 6 } 7 private void bindCbo() 8 { 9 IList<Info> infoList = new List<Info>(); 10 Info info1 = new Info() { Id = "1", Name = "ZhangSan" }; 11 Info info2 = new Info() { Id = "2", Name = "LiSi" }; 12 Info info3 = new Info() { Id = "3", Name = "WangWu" }; 13 infoList.Add(info1); 14 infoList.Add(info2); 15 infoList.Add(info3); 16 cboBindValue.DataSource = infoList; 17 cboBindValue.ValueMember = "Id"; 18 cboBindValue.DisplayMember = "Name"; 19 }
bindCbo use Info Class
这个时候我们就可以直接获得值和显示的内容了
二、Dictionary
这个有点特殊,不能直接绑定,需要借助类BindingSource才可以完成绑定
1 Dictionary<int, string> dic = new Dictionary<int, string>(); 2 dic.Add(1, "11111"); 3 dic.Add(2, "22222"); 4 dic.Add(3, "333333"); 5 6 BindingSource bs = new BindingSource(); 7 bs.DataSource = dic; 8 cboBindValue.DataSource = bs; 9 cboBindValue.ValueMember = "Key"; 10 cboBindValue.DisplayMember = "Value";
Dictionary
三、数据集
这个比较常见,很简单
1 private void BindCombox() 2 { 3 DataTable dt = new DataTable(); 4 DataColumn dc1 = new DataColumn("id"); 5 DataColumn dc2 = new DataColumn("name"); 6 dt.Columns.Add(dc1); 7 dt.Columns.Add(dc2); 8 9 DataRow dr1 = dt.NewRow(); 10 dr1["id"] = "1"; 11 dr1["name"] = "aaaaaa"; 12 13 DataRow dr2 = dt.NewRow(); 14 dr2["id"] = "2"; 15 dr2["name"] = "bbbbbb"; 16 17 dt.Rows.Add(dr1); 18 dt.Rows.Add(dr2); 19 20 cboBindValue.DataSource = dt; 21 cboBindValue.ValueMember = "id"; 22 cboBindValue.DisplayMember = "name"; 23 }
DataTable
注意:
当我们触发combox的SelectedIndexChanged的事件后,我们在加载窗体的时候就会执行,这点我刚开始也和魅惑,导致容易出错,这点我们可以采取一些方法避免执行,比如可以定义一个变量fig=false
1 private bool fig = false; 2 3 private void cboBindValue_SelectedIndexChanged(object sender, EventArgs e) 4 { 5 if (this.fig) 6 { 7 //你自己的逻辑 8 } 9 }
cboBindValue_SelectedIndexChanged
那么肯定想在加载窗体后,执行了,所以在加载窗体后我们还要把fig的值设为true
1 private void Form1_Load(object sender, EventArgs e) 2 { 3 //bindCbo(); 4 BindCombox(); 5 fig = true; 6 }
Form1_Load set fig = true
http://www.cnblogs.com/peterzb/archive/2009/05/30/1491923.html
时间: 2024-10-24 06:34:47