Событие срабатывает при щелчке мыши, но не при нажатии клавиш направления
Итак, у меня проблема с моим приложением. Чтобы объяснить, что происходит, я использую событие leave, чтобы показать MessageBox, когда действительный элемент не выбран из списка comboBox. В настоящее время он появляется, если я начинаю печатать, а затем пытаюсь выбрать элемент с помощью мыши, но не появляется, если я использую клавиши со стрелками. Например, где я ввожу "cen" и хочу выбрать "Camp Chicken Broth 10.5oz (17960)" из списка, если я использую клавиши направления, а затем нажимаю Enter, все в порядке, но если я использую мышь, тогда MessageBox (Оставьте Событие). Я также заметил, что он позволяет выбирать мышью после закрытия события MessageBox Leave. Выбор элемента после того, как пользователь закрывает MessageBox, довольно утомителен. Есть ли обходной путь для этого? Ниже приведена моя текущая функция выхода из события
Что я уже пробовал:
private void suggestComboBox1_Leave(object sender, EventArgs e) { ComboBox c_med = (ComboBox)sender; if (!suggestComboBox1.Items.Contains(c_med.Text)) { MessageBox.Show("Not a valid Cari-med Item!"); } }
Michael_Davies
Это выигрышные формы?
Немного озадачен как :
Клавиши направления обычно не оставляют элемент управления, поэтому не вызывают событие leave, клавиша Tab перемещается между элементами управления и запускает событие leave.
Щелчок элемента в выпадающем списке не покидает элемент управления, если только вы не сделаете это в событии click или selectionchanged.
Member 12896210
Да, это winforms. Если я попытаюсь выбрать значение из списка, то возникнет событие Leave. Но когда я его закрою,то смогу выбрать. Кажется, что каждый раз, когда я пытаюсь выбрать значение в списке, появляется событие Leave. Выбор принимается только тогда(то есть событие Leave не появляется), когда я закрываю событие Leave и повторяю попытку выбора
Michael_Davies
И вы не ловите selectionchanged или любое другое событие?
Просто добавил событие leave и протестировал одну из моих форм combobox, и она ведет себя так, как ожидалось.
Почему бы не использовать selectionchanged, поскольку он срабатывает, когда пользователь изменяет выбор (предостережение: также срабатывает для каждого элемента, когда вы добавляете их в элемент управления)
Member 12896210
Нет не я
Michael_Davies
Вы также проверяете, содержит ли combobox текст текущего выбранного элемента combobox, который, очевидно, является истинным, но возвращает false в моем тесте.
Просто попробовал сам, и он выскакивает в окне сообщений, хотя и содержит текст, в котором может быть ваша проблема.