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);