[英]Finding an item by object value in Combobox
我有一个用Arraylist填充的组合框,如下所示。 如果我有同一对象的另一个实例,如何在组合框中选择该对象? 请查看下面的代码以了解。
MakeEntity selectedMake = Make.GetMakeByTitle("Honda");
List<MakeEntity> allMakes = Make.GetAllMakes();
cbVehicleMake.DataSource = allMakes;
cbVehicleMake.SelectedIndex = cbVehicleMake.Items.IndexOf(selectedMake);
但是最后一行没有按预期工作。 我可以让它完全运行还是我走错了方向? MakeEntity应该实现iComparable吗?
假设MakeEntity有一个名为id的属性!
cbVehicleMake.SeletedItem=allMakes.Find(q=>q.Id==selectedMake.Id))
您不需要为IndexOf
实现IComparable
,只需实现Equals
。 否则,它将默认为Object.Equals
,仅当两个引用都指向同一实例时才匹配。 (在不查看MakeEntity
的定义的情况下,不确定这是否是一个问题。)
另外,只需使用:
cbVehicleMake.SelectedItem = selectedMake;
这将在内部处理在选项中查找对象的过程。
文档: http : //msdn.microsoft.com/zh-cn/library/system.windows.forms.combobox.selecteditem.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.