用于通过回车键进行选择的 CComboBox 事件?

CComboBox event for making selection by enter key?

我有一个带有 CComboBox DropList 样式的对话框。我希望它在以下时间调用我的函数(例如 LoadData()):

  1. 用户单击下拉列表中的项目,或者
  2. 下拉列表中的项目高亮显示(通过鼠标悬停或键盘),用户按下回车键

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

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

1
12
123

然后我输入 12,它将触发 1 一次 ON_CBN_SELCHANGE12 一次……但实际上我正在尝试输入 123,所以我不希望前 2 次击键导致 LoadData() 调用。

实现这个的正确方法是什么?

根据您问题中的评论,答案如下:

  • Right-click 控件和 select 添加事件处理程序:

  • Select 对话框 class,选择消息 CBN_SELENDOK(如果需要,可以调整方法名称):

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

现在您可以按要求进行了。


备选

  • Select控件,然后查看属性窗格。单击 控制事件:

  • 在列表中找到 CBN_SELENDOK,单击 drop-down 箭头和 select 添加处理程序的选项: