通过输入键进行选择的CComboBox事件?

时间:2019-07-11 10:44:12

标签: user-interface mfc ccombobox

我有一个对话框,其中有一个CComboBox的DropList样式。我希望它在以下情况下调用我的函数(例如LoadData()

  1. 用户单击下拉列表中的项目,或
  2. 下拉列表中的一个项目被突出显示(通过鼠标悬停或键盘突出显示),并且用户按Enter键

,但当用户仍在#2中键入文本时则不行。

LoadData()处理程序中调用ON_CBN_SELCHANGE对于#1可以正常工作,但是对于#2,此事件在每次击键时触发,而不是仅在enter时触发。换句话说,如果我有组合框项目:

1
12
123

然后我输入12,它将为ON_CBN_SELCHANGE触发一次1,一次为12触发一次……但实际上我是在尝试输入{{1} },所以我不希望前两次击键会导致123调用。

实现此目的的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

在您的问题中,以下是答案:

  • 右键单击控件,然后选择添加事件处理程序

1

  • 选择对话框类,选择消息CBN_SELENDOK(并根据需要调整方法名称):

2

  • 这将为您添加默认事件处理程序:
    void CMFCApplication1Dlg::OnCbnSelendokCombo1()
    {
        // TODO: Add your control notification handler code here
    }

现在您可以根据需要进行操作了。


替代

  • 选择控件,然后查看属性窗格。点击控制事件

3

  • 在列表中找到CBN_SELENDOK,单击下拉箭头并选择添加处理程序的选项:

4