【问题标题】:C# Using a list of objects to populate combobox and keeping object properties accessibleC# 使用对象列表填充组合框并保持对象属性可访问
【发布时间】:2015-12-13 11:52:15
【问题描述】:

我在使用列表中的值填充组合框时遇到了一些困难。 该列表包含以下内容。

public List<Classroom> classes= new List<Classroom>();

包含:

public List<Students> Members{ get;}

public Classroom(string naam, string code, int maxPersonen)
{
    Name= name;
    Code = code;
    MaxPeople= maxpeople;
    Members= new List<Members>();
}

我正在尝试使用List 类填充我的组合框,并将这些类中的每一个显示如下(当前使用此):

foreach(Classroom classrooom in repository.classes)
{
    cmbClass.Items.Add(classroom.Name + " (" + classroom.Code + ")");
}

我想像这样直观地显示它们,但仍然能够访问所选教室的所有其他属性(使用时)。

希望这足够清楚,可以理解! 提前致谢!

【问题讨论】:

    标签: c# list object combobox populate


    【解决方案1】:

    您需要将列表作为数据源绑定到组合框,而不是一一添加。并且,将只读属性 DisplayName 添加到教室以返回 Name + " (" + Code + ")" 以将其用作显示值。可以添加数据源,设置显示值,选中项属性会返回对象。

        cmbClass.DataSource = classes;
        cmbClass.DisplayMember = classroom.DisplayName; 
    

    参考 - ComboBox 类: https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox%28v=vs.110%29.aspx

    【讨论】:

    • 我想我必须创建一个名为教室的类实例来跟随你的例子。此外,我在 Valuemember 位上遇到错误;无法将类型“类”隐式转换为“字符串”。附言。我想是 cmbClass.Datasource 而不是 ItemsSource?
    • 列表中已有教室实例。而且,是的,它是 DataSource 属性 (msdn.microsoft.com/en-us/library/x8160f6f%28v=vs.110%29.aspx)。您需要做的就是分配 DataSource 和 DisplayMember 属性。不需要 ValueMember 属性。选中的项目会直接返回对象。
    • 我没有完全明白。看到名称“教室”是我用来在我的 foreach 中填充组合框的名称。因为我不需要你的方法的 foreach,所以我没有“教室”可以调用。
    • 使用 cmbClass.DisplayMember = "DisplayName" 代替教室.Displayname;你的方法很完美!非常感谢!
    • 欢迎凯文!很高兴它有帮助。我最近开始为 StackOverflow 做贡献,能帮助你真的感觉很好!
    猜你喜欢
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多