2010-11-08 2 views
3

Кто-нибудь знает о каком-либо событии или последовательности событий, которые можно обрабатывать, когда пользователь нажимает элемент в ComboBox? В настоящее время единственными событиями, которые, как я вижу, являются пожары из ComboBox в WinForms, являются SelectedIndexChanged или SelectedValueChanged. Проблема с этими событиями заключается в том, что они также запускаются во многих других средах, например, когда пользователь нажимает стрелку вверх или вниз (даже если ComboBox не открыт).Handle Click Event on Item в ComboBox

ComboBox.SelectedIndexChanged += (o, e) => Console.WriteLine("ComboBox_SelectedIndexChanged"); 
ComboBox.SelectedValueChanged += (o, e) => Console.WriteLine("ComboBox_SelectedValueChanged"); 

Любые мысли?

+0

Выбранное значениеIndex действительно * сделал * изменение. Это не должно быть проблемой. Подклассирование выпадающего окна - очень уродливый код, чтобы получить право, но технически возможно с классом NativeWindow. –

ответ

3

Если вы спрашиваете, когда пользователь нажимает элемент в ComboBox, чтобы выбрать его, вы можете использовать событие ComboBox.SelectionChangeCommitted.

+0

Это помогло, а также проверить, не выпало ли выпадающее поле. Единственный раз, когда это событие срабатывает при сбросе ComboBox, - это когда пользователь нажимает на него или нажимает Enter. var comboBox = (ComboBox) отправитель; if (comboBox.DroppedDown) DoSomething (comboBox.SelectedItem); –