【问题】
C#中,需要向一个combox中添加一个结构体数组。
结果,添加了之后,显示出来的值,只是结构体变量类型的名字:
而不是希望的,其中某的域值,即此处的name:
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?
去改代码,改为:
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中添加结构体数组