Search code examples
c#listwinformsdata-bindingcombobox

Cannot bind to the new display member in ComboBox


I have a class which give me this error

public class Item 
{
    public string Name;
    public int Id

    public Item(string name, int id) 
    {
        Name = name; 
        Id = id;
    }
}   

Here is my function

 var lstItems = new List<Item>();
 while(...)
 {
     lstItems.Add(new Item(sAd_Ref, Convert.ToInt32(sAd_ID))); 
 }

 comboBox1.DataSource = lstItems;
 comboBox1.ValueMember = "Id";
 comboBox1.DisplayMember = "Name";

On second to the last line I am getting exception of

Cannot bind to the new display member.


Solution

  • You should make Name and Id properties. You can't bind ComboBox to fields.

    public string Name { get; set; }
    public int Id { get; set; }
    

    It's also stated in docs:

    ValueMember Property: Gets or sets the property to use as the actual value for the items in the System.Windows.Forms.ListControl.