2016-04-01 22 views
1

約3時間私はこの問題を解決しようとしています。私のコンボボックスの表示私には例えば代わり​​に、値オブジェクトの名前: enter image description hereC#オブジェクトの名前を表示する代わりにcomboBoxの値を表示する方法

これが私のクラスである:

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でIすべての製品を取得し、コンボボックスやラベルで表現しようとしています。 この場合、私は何ができますか?

+0

チェックこのilnk http://stackoverflow.com/questions/600869/how-to-bind-a-list-to-a-combobox-winforms – rashfmnb

答えて

3

はあなたがselectedItem.Value

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

あなたはのtoStringをオーバーライドする必要がありますからアクセスできるバインドが表示されようとしているそのDisplayMemberとして、ソースと同じまたはそのValueMemberなどの別のプロパティでプロパティのいずれかを指定する必要があります()は、このようなクラスのメソッド:

public override string ToString() 
    { 
     return name; 
    } 
関連する問題