C# 如何显示组合框值而不是显示对象的名称

C# 如何显示组合框值而不是显示对象的名称,c#,winforms,list,foreach,combobox,C#,Winforms,List,Foreach,Combobox,大约3个小时,我试图解决这个问题。我的组合框向我显示对象的名称,而不是一个值,例如:a 这是我的班级: namespace Supermarket { public class WhareHouseTable { public string name { get; set; } public double cost { get; set; } public string offer { get; set; } } } 这

大约3个小时,我试图解决这个问题。我的组合框向我显示对象的名称,而不是一个值,例如:a

这是我的班级:

namespace Supermarket
{
    public class WhareHouseTable
    {
        public string name { get; set; }
        public double cost { get; set; }
        public string offer { get; set; }
    }
}
这是我的代码:

private void Form1_Load(object sender, EventArgs e)
{
    List<WhareHouseTable> product = new List<WhareHouseTable>();
    product.Add(new WhareHouseTable { name = "A", cost = 0.63, offer = "Buy 2 for the price of 1" });
    product.Add(new WhareHouseTable { name = "B", cost = 0.20 });
    product.Add(new WhareHouseTable { name = "C", cost = 0.74, offer = "Buy 2; get B half price" });
    product.Add(new WhareHouseTable { name = "D", cost = 0.11 });
    product.Add(new WhareHouseTable { name = "E", cost = 0.50, offer = "Buy 3 for the price of 2" });
    product.Add(new WhareHouseTable { name = "F", cost = 0.40 });

    comboBox2.DataSource = product;
    comboBox2.DropDownStyle = ComboBoxStyle.DropDownList;

    source.DataSource = product;

    foreach (var selected in product)
    {
        comboBox2.Text = selected.name;
        itemCostLabel.Text = selected.cost.ToString();
        offerLabel.Text = selected.offer;
    }
}
private void Form1\u加载(对象发送方,事件参数e)
{
列表产品=新列表();
product.Add(新WhareHouseTable{name=“A”,成本=0.63,offer=“以1”的价格购买2”);
product.Add(新WhareHouseTable{name=“B”,成本=0.20});
product.Add(新WhareHouseTable{name=“C”,成本=0.74,offer=“购买2;获得B半价”});
product.Add(新WhareHouseTable{name=“D”,成本=0.11});
product.Add(新WhareHouseTable{name=“E”,成本=0.50,offer=“以2”的价格购买3”);
product.Add(新WhareHouseTable{name=“F”,成本=0.40});
comboBox2.DataSource=产品;
comboBox2.DropDownStyle=ComboBoxStyle.DropDownList;
source.DataSource=产品;
foreach(产品中选择的var)
{
comboBox2.Text=selected.name;
itemCostLabel.Text=selected.cost.ToString();
offerLabel.Text=selected.offer;
}
}
在foreach中,我试图获取所有产品,并在组合框和标签中表示它们


在这种情况下,我能做什么?

您需要指定绑定源中的一个属性作为其
DisplayMember
将要显示的属性,以及与其
ValueMember
相同或另一个属性,您可以通过
selectedItem.Value

  comboBox2.DisplayMember = "Name";
  comboBox2.ValueMember = "Name";

您应该像这样重写类的toString()方法:

public override String toString(){
    return name;
}
检查此ilnk