最新消息:20210917 已从crifan.com换到crifan.org

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

C# crifan 2674浏览 0评论

【问题】

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,即可实现上述的效果。

转载请注明:在路上 » 【已解决】C#中向Combox中添加结构体数组

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
92 queries in 0.182 seconds, using 23.38MB memory