gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:52:23 28 4
gpt4 key购买 nike

我有一个正在填充的 ComboBox,其中 ComboBox.Items 中的每个对象都是一个对象列表。目前,ComboBox 为每个项目显示“(Collection)”。

是否可以让 ComboBox 显示 List 中包含 ComboBox 的 Item 的第一个对象的成员?

我目前正在通过以下方式填充 ComboBox 项目:

foreach(List<SorterIdentifier> sorterGroup in m_AvailableSorterGroups)
{
// There are conditions that may result in the sorterGroup not being added
comboBoxSorterSelect.Items.Add(sorterGroup);
}

//comboBoxSorterSelect.DataSource = m_AvailableSorterGroups; // Not desired due to the comment above.
//comboBoxSorterSelect.DisplayMember = "Count"; //Displays the Count of each list.

我想在 ComboBox 中显示的值可以通过以下方式引用:

((List<SorterIdentifier>)comboBoxSorterSelect.Items[0])[0].ToString();
((List<SorterIdentifier>)comboBoxSorterSelect.Items[0])[0].DisplayName; // public member

最佳答案

您可以创建一个对象包装器并覆盖 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;
}

}

您也应该覆盖 SorterIdentifier.ToString() 以返回您想要的内容,例如 DisplayName

现在您可以像这样在组合框中添加项目:

foreach(var sorterGroup in m_AvailableSorterGroups)
{
item = new ComboBoxSorterIdentifierItem(sorterGroup);
comboBoxSorterSelect.Items.Add(item);
}

例如,要使用所选项目,您可以这样写:

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

关于c# - 是否可以将 ComboBox DisplayMember 设置为列表中对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58203681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com