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

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

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

最佳答案

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

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

相关文章:

python - 将 wxPanel 保存到图像

c++ - wxWidgets 和 Dev-C++

c++ - 如何修复“Created graphical object was not placed in the graphics scene”的错误

c++ - 在 C++ 中选择重载模板函数时的优先级

指针和多维数组的 C++ 双重间接寻址

c++ - wxWidgets 中基于对话框的应用程序和基于框架的应用程序有什么区别

c++ - 从机器名称中查找机器 IP 地址

c++ - 为什么 union 不允许其元素具有用户定义的构造函数?

c++ - 为什么我的 double 可以包含低于机器 epsilon 的值?

c++ - 是否可以使 wxDataViewCtrl 自动滚动到底部?