用于通过回车键进行选择的 CComboBox 事件?
CComboBox event for making selection by enter key?
我有一个带有 CComboBox
DropList 样式的对话框。我希望它在以下时间调用我的函数(例如 LoadData()
):
- 用户单击下拉列表中的项目,或者
- 下拉列表中的项目高亮显示(通过鼠标悬停或键盘),用户按下回车键
但当用户仍在#2 中键入文本时则不会。
在 ON_CBN_SELCHANGE
处理程序中调用 LoadData()
对于 #1 工作正常,但对于 #2 此事件在每次击键时触发,而不是仅在输入时触发。换句话说,如果我有组合框项目:
1
12
123
然后我输入 12
,它将触发 1
一次 ON_CBN_SELCHANGE
,12
一次……但实际上我正在尝试输入 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 添加处理程序的选项:
我有一个带有 CComboBox
DropList 样式的对话框。我希望它在以下时间调用我的函数(例如 LoadData()
):
- 用户单击下拉列表中的项目,或者
- 下拉列表中的项目高亮显示(通过鼠标悬停或键盘),用户按下回车键
但当用户仍在#2 中键入文本时则不会。
在 ON_CBN_SELCHANGE
处理程序中调用 LoadData()
对于 #1 工作正常,但对于 #2 此事件在每次击键时触发,而不是仅在输入时触发。换句话说,如果我有组合框项目:
1
12
123
然后我输入 12
,它将触发 1
一次 ON_CBN_SELCHANGE
,12
一次……但实际上我正在尝试输入 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 添加处理程序的选项: