Поиск элемента по значению объекта в Combobox - PullRequest
1 голос
/ 30 июля 2011

У меня есть поле со списком, которое заполнено Arraylist, как показано ниже. Если у меня есть другой экземпляр того же объекта, как мне выбрать этот объект в выпадающем списке? Пожалуйста, посмотрите на код ниже, чтобы понять.

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

Но последняя строка не работает, как ожидалось. Могу ли я заставить его работать вообще или я иду в неправильном направлении? Должен ли MakeEntity реализовать iComparable?

Ответы [ 2 ]

4 голосов
/ 30 июля 2011

Предполагая, что MakeEntity имеет свойство с именем id!

 cbVehicleMake.SeletedItem=allMakes.Find(q=>q.Id==selectedMake.Id))
1 голос
/ 30 июля 2011

Вам не нужно вводить IComparable для IndexOf, просто Equals.В противном случае по умолчанию будет Object.Equals, что соответствует только в том случае, если две ссылки относятся к одному и тому же экземпляру.(Не уверен, если это проблема или нет, не видя определения MakeEntity.)

Также просто используйте:

cbVehicleMake.SelectedItem = selectedMake;

Это внутренне будет обрабатывать поиск объекта в опциях.

Документация: http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selecteditem.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...