Событие Comobox SelectedValueChanged

У меня есть простой вопрос, может быть, кто-то спросил его передо мной, но я не мог его найти. Скажем, у меня есть данные, которые содержат некоторые данные из базы данных, и я хочу привязать их к combobox. Я использую стандартный код, подобный этому

 comboBox1.BeginUpdate( );
 comboBox1.ValueMember = "id";
 comboBox1.DisplayMember = "name";
 comboBox1.DataSource = dt;
 comboBox1.EndUpdate( );

Проблема заключается в том, что это событие связано с событием SelectedValueChanged. Проблема заключается в том, что перекомпоновка несколько раз, когда значения outher меняются, и каждый раз, когда я должен делать что-то подобное

 comboBox1.SelectedIndexChanged -= new System.EventHandler( this.comboBox1_SelectedValueChanged );

В моем вопросе есть более умный способ пропустить событие, когда я получаю привязку данных не от ввода пользователя. Проблема в том, что я хочу сделать это как-то, как глобально в моем элементе управления, который наследует combobox, и не делать это каждый раз в каждом из С наилучшими пожеланиями,
Иордан

Ответы

Ответ 1

Попробуйте использовать событие SelectionChangeCommitted.

Из документации MSDN:

SelectionChangeCommitted возникает только тогда, когда пользователь меняет выбор поля со списком. Не используйте SelectedIndexChanged или SelectedValueChanged, чтобы фиксировать пользовательские изменения, поскольку эти события также повышается, когда выбор изменяется программно.

Ответ 2

Я всегда делал это, как сказал крекер. Я создаю глобальную логическую переменную с именем _isLoading и устанавливаю ее в true при загрузке моего combobox, а затем обратно к false, когда это будет сделано. Затем в обработчике событий первая строка

if(_isLoading) return;