![](/img/trans.png)
[英]Using SelectedItem property of ComboBox with Linq Anonymous Type
[英]Add object property value to combobox using linq
我有一個ComboBox,正在填充要選擇的對象。 我有一個帶有幾個屬性的LifeCycleObject類,其中一個是Name,一個是TypeID。 我正在嘗試將Name屬性添加到TypeID = 4或5的ComboBox中。
Linq Query
_lcObjects = new List<LifeCycleObject>();
cbStep.Items.AddRange(_lcObjects.FindAll(
x => x.TypeID == 5 || x.TypeID == 4
).ToArray());
哪個可行,但是它添加了對象EMS.Action.Entities.LifeCycleObject的類型,我無法從每個項目都相同的組合框中選擇正確的對象,因此如何添加LifeCycleObject.Name而不是Class名稱。
您正在尋找DisplayMember
屬性和Binding
:
cbStep.DisplayMember = "Name";
cbStep.DataSource = _lcObjects.FindAll(x => x.TypeID == 5 || x.TypeID == 4);
這樣,對象的名稱將顯示在ComboBox
。 並且SelectedValue
屬性將保存選定的對象。注意,為了使此工作有效, Name
應該是您的類中的公共屬性,而不是字段。
您的工作沒有錯。 您將在列表框中添加要從中選擇的LifeCycleObject
列表。 現在,引起混亂的是組合框不知道如何顯示對象的事實,因此它僅在對象上調用ToString
。 但是您可能沒有覆蓋該方法,因此它只會告訴您該對象的名稱。
因此,一種方法是覆蓋ToString
方法,以便它返回Name
屬性的值。 但是,更優雅的方法是告訴組合框應如何顯示這些對象。 它的工作方式取決於您使用的組合框的類型:使用WPF,可以設置DisplayMemberPath屬性。 使用WinForms,您需要設置DisplayMember屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.