我有一个用Arraylist填充的组合框,如下所示。如果我有另一个相同对象的实例,如何在组合框中选择该对象?请查看以下代码以了解。
MakeEntity selectedMake = Make.GetMakeByTitle("Honda");
List<MakeEntity> allMakes = Make.GetAllMakes();
cbVehicleMake.DataSource = allMakes;
cbVehicleMake.SelectedIndex = cbVehicleMake.Items.IndexOf(selectedMake);
但是最后一行没有按预期工作。我可以让它完全运行,还是我朝错误的方向前进? MakeEntity应该实现iComparable吗?
答案 0 :(得分:4)
假设MakeEntity有一个名为id!的属性
cbVehicleMake.SeletedItem=allMakes.Find(q=>q.Id==selectedMake.Id))
答案 1 :(得分:1)
您不需要为IComparable
实施IndexOf
,只需Equals
。否则它将默认为Object.Equals
,仅当两个引用属于同一实例时才匹配。 (如果没有看到MakeEntity
的定义,请确定这是否是一个问题。)
另外,只需使用:
cbVehicleMake.SelectedItem = selectedMake;
这将在内部处理在选项中查找对象。
文档:http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem.aspx