我有一个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捕获了按键事件,然后为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();
}现在的问题是如何从弹出窗口中捕获选中/突出显示的字符串?
发布于 2018-04-10 05:43:06
自动完成的工作方式是由系统UI约定决定的,因此干扰它看起来不是一个好主意。如果您确实希望立即进行选择,请考虑使用另一个控件,如wxChoice。
https://stackoverflow.com/questions/49735893
复制相似问题