【问题】
C#中,已有一个List,想要动态的,绑定到ComboBox中。
【解决过程】
1.参考:
去试试代码:
1 2 3 | cmbSubCategory.DataSource = generalCategoryList; cmbSubCategory.DisplayMember = "name" ; cmbSubCategory.ValueMember = "url" ; |
结果是可以执行,但是点击combobox时,下来菜单是空的。
2.参考:
C# Binding Generic LIst<string> to Combo Box
打算去试试。
3.经过后来的折腾,找到原因了:
4.然后此处,实际上是,之前的写法,就是正常的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public struct categoryItem { public string Name { get ; set ; } public string Url { get ; set ; } }; List<categoryItem> generalCategoryList; private void initSearchCategory() { generalCategoryList = new List<categoryItem>(); foreach (HtmlNode singleOptionNode in optionNodeList) { ...... //store info categoryItem singleCategoryItem = new categoryItem(); singleCategoryItem.Name = generalCategory; singleCategoryItem.Url = singleCategoryUrl; //add to list generalCategoryList.Add(singleCategoryItem); } if (generalCategoryList.Count > 0) { //init search category cmbSubCategory.DataSource = generalCategoryList; cmbSubCategory.DisplayMember = "name" ; cmbSubCategory.ValueMember = "url" ; } } |
然后ComboBox中就可以看到对应的选项了:
【总结】
绑定的动作,其实很简单:
1 2 3 | cmbSubCategory.DataSource = generalCategoryList; cmbSubCategory.DisplayMember = "name" ; cmbSubCategory.ValueMember = "url" ; |
就可以了。
但是要注意:
此处,如果改为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | public struct categoryItem { public string name; public string url; }; List<categoryItem> generalCategoryList; private void initSearchCategory() { generalCategoryList = new List<categoryItem>(); foreach (HtmlNode singleOptionNode in optionNodeList) { ...... //store info singleCategoryItem.name = generalCategory; singleCategoryItem.url = singleCategoryUrl; //add to list generalCategoryList.Add(singleCategoryItem); } if (generalCategoryList.Count > 0) { //init search category cmbSubCategory.DataSource = generalCategoryList; cmbSubCategory.DisplayMember = "name" ; cmbSubCategory.ValueMember = "url" ; } } |
那么结果就错了,然后每一项,就都是对应的对象的名字了:
具体根本原因,暂时懒得去深究了。
转载请注明:在路上 » 【已解决】C#中ComboBox动态绑定赋值