【已解决】C#中向Combox中添加结构体数组

【问题】

C#中,需要向一个combox中添加一个结构体数组。

结果,添加了之后,显示出来的值,只是结构体变量类型的名字:

only added type name not value name to 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";
}

即可实现,对应的效果:

can show name value and real value is struct

即:

combox中,数据来源是当前的这个结构体的列表。

combox中显示出来的值(display value),是对应的name域的值;

combox中的每个值(value),都是对应的单个的结构体变量;

 

【总结】

把结构体列表,搞成combox中的数据源,设置DisplayMember,即可实现上述的效果。



发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量