在Combobox中按对象值查找项目

时间:2011-07-30 00:28:39

标签: c# winforms combobox

我有一个用Arraylist填充的组合框,如下所示。如果我有另一个相同对象的实例,如何在组合框中选择该对象?请查看以下代码以了解。

        MakeEntity selectedMake = Make.GetMakeByTitle("Honda");
        List<MakeEntity> allMakes = Make.GetAllMakes();
        cbVehicleMake.DataSource = allMakes;
        cbVehicleMake.SelectedIndex = cbVehicleMake.Items.IndexOf(selectedMake);

但是最后一行没有按预期工作。我可以让它完全运行,还是我朝错误的方向前进? MakeEntity应该实现iComparable吗?

2 个答案:

答案 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