gpt4 book ai didi

c++ - 自定义 wxTextCtrl 自动完成

转载 作者:太空宇宙 更新时间:2023-11-04 12:49:26 25 4
gpt4 key购买 nike

我有一个 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();
}

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

最佳答案

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

关于c++ - 自定义 wxTextCtrl 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49735893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com