自定义wxTextCtrl自动完成

时间:2018-04-09 14:53:19

标签: c++ wxwidgets

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

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捕获KEY DOWN事件,然后为EVT_KEY_DOWN事件添加事件处理程序。

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();
}

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

1 个答案:

答案 0 :(得分:0)

自动完成的工作方式由系统UI约定决定,因此干扰它并不是一个好主意。如果您确实想立即选择,请考虑使用其他控件,例如wxChoice