1

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

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

但不是当用户仍在#2中输入文本时。

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

1
12
123

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

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

4

1 回答 1

2

除了您问题中的评论,这里是答案:

  • 右键单击控件并选择Add Event Handler

1

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

2

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

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


选择

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

3

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

4

于 2019-07-14T10:36:31.323 回答