You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Autoquark edited this page Sep 1, 2016
·
1 revision
Intro
I'm using this page to keep track of all the ways in which WinForms is rubbish, so that when I come back later I can see why I did all of the hacky things that I did.
ListBox does not notify when the selection changes due to an item being remove from the backing list
Problem
ListBox.DataSource = new BindingList() { some content... }
bindingList.Remove(listBox.SelectedItem)
listBox.SelectedValue and listBox.SelectedItem change, but neither SelectedValueChanged nor SelectedIndexChanged fire.
This causes issues with (for example) keeping the list of items and the detail view in synch for a master-detail control.
Solutions
Run update code in both SelectedValueChanged and bindingList.ListChanged
When ListBox.SelectedItem is removed from the backing BindingList<>, the ListChanged handler is called before ListBox.SelectedItem changes, so we can't use the new value.