【问题】
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中添加结构体数组