【问题标题】:CComboBox event for making selection by enter key?通过回车键进行选择的CComboBox事件?
【发布时间】:2019-11-21 01:37:35
【问题描述】:

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

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

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

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

1
12
123

然后我输入12,它将触发ON_CBN_SELCHANGE 一次用于1,一次用于12 ...但实际上我正在尝试输入123,所以我不想要那些第一个2 次击键导致LoadData() 调用。

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

【问题讨论】:

  • ON_CBN_SELENDOK
  • 就是这样!谢谢!你能把这个作为答案让我接受吗?
  • @zett42 有趣的是,那里的最佳答案增加了与 CEdit 的一些交互,这在我的情况下不需要。我猜他们的组合框使用下拉样式,而我的使用下拉列表。这算不算重复?

标签: user-interface mfc ccombobox


【解决方案1】:

除了问题中的 cmets,答案如下:

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

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

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

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


另类

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2021-05-12
    • 2011-08-18
    • 2010-11-13
    相关资源
    最近更新 更多