【问题】
C#中,需要向一个combox中添加一个结构体数组。
结果,添加了之后,显示出来的值,只是结构体变量类型的名字:
而不是希望的,其中某的域值,即此处的name:
1 2 3 4 5 6 | public struct categoryItem { public string name; public string url; public List<categoryItem> subCategoryList; }; |
希望可以添加对应的这个结构体的数组,并且可以显示出对应的name值。
【解决过程】
1.参考:
Can I bind a list of structs to a combobox?
去改代码,改为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public struct categoryItem { public string Name{ get ; set ; } public string Url { get ; set ; } public List<categoryItem> subCategoryList; }; category mainCategory; List<category.categoryItem> mainCategoryList; private void frmAmazonHotDeal_Load( object sender, EventArgs e) { mainCategory = new category(); mainCategoryList = mainCategory.getMainCategoryList(); //foreach (category.categoryItem singleMainCategory in mainCategoryList) //{ // cmbMainCatetory.Items.Add(singleMainCategory); //} cmbMainCatetory.DataSource = mainCategoryList; cmbMainCatetory.DisplayMember = "name" ; } |
即可实现,对应的效果:
即:
combox中,数据来源是当前的这个结构体的列表。
combox中显示出来的值(display value),是对应的name域的值;
combox中的每个值(value),都是对应的单个的结构体变量;
【总结】
把结构体列表,搞成combox中的数据源,设置DisplayMember,即可实现上述的效果。
转载请注明:在路上 » 【已解决】C#中向Combox中添加结构体数组