首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义wxTextCtrl自动完成

自定义wxTextCtrl自动完成
EN

Stack Overflow用户
提问于 2018-04-09 22:53:19
回答 1查看 237关注 0票数 0

我有一个wxTextCtrl对象,并将其设置为自动完成

代码语言:javascript
复制
wxArrayString _myStringArray;
_myStringArray.push_back("abc");
_myStringArray.push_back("alpha");
_myStringArray.push_back("bnm");

_myTextCtrl->AutoComplete(_myStringArray);

我在其中输入char 'a‘。然后弹出相关/建议字符串的列表(即"abc“和"alpha")。现在我按下向下箭头键来选择一个字符串。当我第一次按下按钮时,"abc“字符串被选中。第二次按下按钮时,"alpha“字符串被选中。

问题是,通过按上下箭头键来更改字符串选择并不会更改文本控件值。我希望在按上下箭头键更改所选字符串时更新文本控件值。

如果我知道事件名称,我想我可以手动完成此操作。所以问题是:通过按上下箭头键从wxTextCtrl中的弹出窗口更改字符串选择的事件名称(或事件宏)是什么?

谢谢

更新:我成功地通过子类化wxTextCtrl捕获了按键事件,然后为EVT_KEY_DOWN事件添加了一个事件处理程序。

代码语言:javascript
复制
void TextCtrlChild::keyHandler(wxKeyEvent& event)
{
   int _keyCode = event.GetKeyCode();
   if(_keyCode == 315 || _keyCode == 317){ //if UP or DOWN arrow key is pressed
     //TO DO: capture the highlighted string from the popup
   }
   event.Skip();
}

现在的问题是如何从弹出窗口中捕获选中/突出显示的字符串?

EN

回答 1

Stack Overflow用户

发布于 2018-04-10 05:43:06

自动完成的工作方式是由系统UI约定决定的,因此干扰它看起来不是一个好主意。如果您确实希望立即进行选择,请考虑使用另一个控件,如wxChoice

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49735893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档