Если возникла задача реагировать на выбор пользователя из выпадающего списка ComboBox’а, то очевидным решением является подписка на событие SelectedIndexChanged:
Но дело в том, что событие
После этого можно свободно манипулировать содержимым коллекции myComboBox.Items или свойством SelectedIndex, не опасаясь за то, что выполнится код, который должен выполнятся при выборе нового элемента пользователем.
ComboBox myComboBox = new ComboBox();
myComboBox.SelectedIndexChanged += new System.EventHandler(this.MyComboBox_SelectedIndexChanged);
Но дело в том, что событие
SelectedIndexChanged
происходит, даже если пользователь ничего не выбирал в ComboBox, а индекс был изменён вашим же кодом (например, вы добавили несколько элементов и выделили последний). Выходом же будет подписка на событие SelectionChangeCommitted
:myComboBox.SelectionChangeCommitted += new System.EventHandler(this.cbLookIn_SelectionChangeCommitted);
После этого можно свободно манипулировать содержимым коллекции myComboBox.Items или свойством SelectedIndex, не опасаясь за то, что выполнится код, который должен выполнятся при выборе нового элемента пользователем.