簡體   English   中英

使用linq將對象屬性值添加到組合框

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM