【问题标题】:How to display comboBox value instead displaying name of objects如何显示组合框值而不是显示对象名称
【发布时间】:2016-07-21 07:38:19
【问题描述】:

大约 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;
    }
}

在 foreach 中,我试图获取所有产品并在组合框和标签中表示它们。

在这种情况下我该怎么办?

【问题讨论】:

标签: c# winforms list foreach combobox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你应该像这样覆盖类的 toString() 方法:

    public override String toString(){
        return name;
    }
    

    【讨论】:

      猜你喜欢
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多