use a BindingList<t> instead of List<t> and a BindingSource and it will work as desired
using System.ComponentModel;
public partial class Form1 : Form
{
private Update _currentUpdate;
private Project _project;
private BindingSource bs;
...
private void DoBindings()
{
NameBox.DataBindings.Add("Text", _project, "ProjName");
IdBox.DataBindings.Add("Text", _project, "Id");
bs = new BindingSource();
bs.DataSource = _project.AvailableUpdates;
UpdatesCombo.DataSource = bs;
UpdatesCombo.DisplayMember = "UId";
UpdatesCombo.ValueMember = "UId";
_currentUpdate = (Update)UpdatesCombo.SelectedItem;
UpdateTitle.DataBindings.Add("Text", bs, "Title");
UpdateDate.DataBindings.Add("Value", bs, "UpdatedOn");
}
}
public class Project
{
public BindingList<Update> AvailableUpdates { get; set; }
}
private void ReadUpdates()
{
AvailableUpdates = new BindingList<Update>();
for (int i = 0; i < 10; i++)
{
AvailableUpdates.Add(new
Update(i, DateTime.Now.AddDays(i)));
}
}
you will find a more detailed answer to a quite similar question here:
c# - ComboBox will not update its display list unless you change selections first - Stack Overflow[
^]