ComboBox is binding to BindingList<T>.
Repro step:
1. add item to empty BindingList<T> (click Add button)
2. clean BindingList<T> (click Clean button)
3. add item to empty BindingList<T> (click Add button)
Result:
Step1: raise SelectedValueChanged event (expected)
Step2: raise event too (expected)
Step3: no event raised (Unexpected)
Test Code:class Program { class Data { public Data(string s) { Str = s; } public string Str { get; set; } } static void Main(string[] args) { Form form = new Form(); ComboBox cb = new ComboBox(); cb.Dock = DockStyle.Top; var list = new BindingList<Data>(); cb.DataSource = list; cb.DisplayMember = "Str"; cb.SelectedValueChanged += (s, e) => { MessageBox.Show("SelectedValueChanged"); }; Button btnClean = new Button(); btnClean.Text = "Clean"; btnClean.Dock = DockStyle.Top; btnClean.Click += (s,e)=> { list.Clear(); }; Button btnAdd = new Button(); btnAdd.Text = "Add"; btnAdd.Dock = DockStyle.Top; btnAdd.Click += (s, e) => { list.Add(new Data("xyz")); }; form.Controls.Add(btnClean); form.Controls.Add(btnAdd); form.Controls.Add(cb); form.ShowDialog(); } }