[英]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.