Событие CComboBox для выбора с помощью клавиши ввода? - PullRequest
1 голос
/ 11 июля 2019

У меня есть диалог с CComboBox в стиле DropList.Я хочу, чтобы он вызывал мою функцию (например, LoadData()), когда:

  1. пользователь щелкает элемент в раскрывающемся списке или
  2. элемент в раскрывающемся списке выделяется (либопри наведении курсора мыши или клавиатуры), и пользователь нажимает

, но НЕ, когда пользователь все еще печатает текст в # 2.

Вызов LoadData() в обработчике ON_CBN_SELCHANGE отлично работает для # 1, но для # 2 это событие срабатывает при каждом нажатии клавиши, а не только при вводе.Другими словами, если у меня есть элементы выпадающего списка:

1
12
123

и я набираю 12, это сработает ON_CBN_SELCHANGE один раз для 1, один раз для 12 ... но на самом деле я 'я пытаюсь набрать 123, поэтому я не хочу, чтобы эти первые 2 нажатия клавиш приводили к LoadData() вызовам.

Как правильно это реализовать?

1 Ответ

2 голосов
/ 14 июля 2019

В дополнение к комментариям в вашем вопросе, вот ответ:

  • Щелкните правой кнопкой мыши элемент управления и выберите Добавить обработчик событий :

1

  • Выберите класс диалога, выберите сообщение CBN_SELENDOK (и настройте имя метода, если хотите):

2

  • Это добавит обработчик событий по умолчанию для вас:
    void CMFCApplication1Dlg::OnCbnSelendokCombo1()
    {
        // TODO: Add your control notification handler code here
    }

Теперь вы можете действовать как нужно.


Альтернативные

  • Выберите элемент управления, а затем посмотрите на панель свойств. Нажмите Управление событиями :

3

  • Найдите в списке CBN_SELENDOK, щелкните стрелку раскрывающегося списка и выберите параметр для добавления обработчика:

4

...