在组合框中按对象值查找项目

本文关键字:查找 项目 对象 组合 | 更新日期: 2023-09-27 18:03:54

我有一个用数组列表填充的组合框,如下所示。如果我有相同对象的另一个实例,我如何在组合框中选择该对象?请看下面的代码来理解。

        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/en-us/library/system.windows.forms.combobox.selecteditem.aspx