gpt4 book ai didi

c# - 如何将 ComboBox 绑定(bind)到具有深层 DisplayMember 和 ValueMember 属性的通用列表?

转载 作者:太空狗 更新时间:2023-10-29 21:24:42 24 4
gpt4 key购买 nike

我正在尝试将像 List Parents 这样的通用列表绑定(bind)到 ComboBox。

    public Form1()
{
InitializeComponent();
List<Parent> parents = new List<Parent>();
Parent p = new Parent();
p.child = new Child();
p.child.DisplayMember="SHOW THIS";
p.child.ValueMember = 666;
parents.Add(p);
comboBox1.DisplayMember = "child.DisplayMember";
comboBox1.ValueMember = "child.ValueMember";
comboBox1.DataSource = parents;
}
}
public class Parent
{
public Child child { get; set; }
}
public class Child
{
public string DisplayMember { get; set; }
public int ValueMember { get; set; }
}

当我运行我的测试应用程序时,我只看到:“ComboBindingToListTest.Parent”显示在我的 ComboBox 中,而不是“SHOW THIS”。如何通过一个级别或更深的属性将 ComboBox 绑定(bind)到通用列表,例如child.DisplayMember??

提前致谢,阿道夫

最佳答案

我不认为你可以做你正在尝试的事情。上面的设计表明一个 Parent 只能有一个 child。真的吗?或者您是否为了这个问题简化了设计。

无论父项是否可以有多个子项,我都建议您使用匿名类型作为组合框的数据源,并使用 linq 填充该类型。这是一个例子:

private void Form1_Load(object sender, EventArgs e)
{
List<Parent> parents = new List<Parent>();
Parent p = new Parent();
p.child = new Child();
p.child.DisplayMember = "SHOW THIS";
p.child.ValueMember = 666;
parents.Add(p);

var children =
(from parent in parents
select new
{
DisplayMember = parent.child.DisplayMember,
ValueMember = parent.child.ValueMember
}).ToList();

comboBox1.DisplayMember = "DisplayMember";
comboBox1.ValueMember = "ValueMember";
comboBox1.DataSource = children;
}

关于c# - 如何将 ComboBox 绑定(bind)到具有深层 DisplayMember 和 ValueMember 属性的通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680343/

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