C# 是否可以将ComboBox DisplayMember设置为列表中对象的属性?

C# 是否可以将ComboBox DisplayMember设置为列表中对象的属性?,c#,list,winforms,combobox,C#,List,Winforms,Combobox,我有一个正在填充的组合框,其中组合框中的每个对象。项是一个对象列表。当前,组合框为每个项目显示“(集合)” 是否可以让组合框显示列表中包含组合框项的第一个对象的成员 我目前正在通过以下方式填充组合框项: foreach(列出m_可用的sorterGroup中的sorterGroup) { //存在可能导致无法添加sorterGroup的情况 comboBoxSorterSelect.Items.Add(sorterGroup); } //comboBoxSorterSelect.DataSour

我有一个正在填充的组合框,其中组合框中的每个对象。项是一个对象列表。当前,组合框为每个项目显示“(集合)”

是否可以让组合框显示列表中包含组合框项的第一个对象的成员

我目前正在通过以下方式填充组合框项:

foreach(列出m_可用的sorterGroup中的sorterGroup)
{
//存在可能导致无法添加sorterGroup的情况
comboBoxSorterSelect.Items.Add(sorterGroup);
}
//comboBoxSorterSelect.DataSource=m_AvailableSorterGroup;//由于上面的评论,不需要。
//comboBoxSorterSelect.DisplayMember=“Count”//显示每个列表的计数。
我希望在组合框中显示的值可以通过以下方式引用:

((列表)comboBoxSorterSelect.Items[0])[0].ToString();
((列表)comboBoxSorterSelect.Items[0])[0].DisplayName;//公职人员

您可以创建对象包装器并重写
ToString()
方法:

public class ComboBoxSorterIdentifierItem
{

  public List<SorterIdentifier> Items { get; }

  public override string ToString()
  {
    if ( Items == null || Items.Count == 0) return "";
    return Items[0].ToString();
  }

  public BookItem(List<SorterIdentifier> items)
  {
    Items = items;
  }

}
例如,要使用所选项目,您可以编写:

... ((ComboBoxSorterIdentifierItem)comboBoxSorterSelect.SelectedItem).Item ...

我可以想象一些方法来做到这一点。。。您可以创建一个扩展
列表的类,这样您就有机会定义要显示的值

public class SortedIdentifier
{
    public string Name { get; set; }
}

public class SortedIdentifiers : List<SortedIdentifier>
{
    public string SortedIdentifierDisplayValue
    {
        get { return this.FirstOrDefault()?.Name ?? "No Items"; }
    }
}
public class SortedIdentifier
{
    public string Name { get; set; }
}

public class SortedIdentifiers : List<SortedIdentifier>
{
    public string SortedIdentifierDisplayValue
    {
        get { return this.FirstOrDefault()?.Name ?? "No Items"; }
    }
}
comboBox1.DisplayMember = "SortedIdentifierDisplayValue";

var list = new SortedIdentifiers { new SortedIdentifier { Name = "John" } };
comboBox1.Items.Add(list);