簡體   English   中英

自定義wxTextCtrl自動完成

[英]customize wxTextCtrl autocomplete

我有一個wxTextCtrl對象並將其設置為自動完成

wxArrayString _myStringArray;
_myStringArray.push_back("abc");
_myStringArray.push_back("alpha");
_myStringArray.push_back("bnm");

_myTextCtrl->AutoComplete(_myStringArray);

我在其中輸入char'a'。 然后顯示一個彈出窗口,其中包含相關/建議的字符串列表(即“ abc”和“ alpha”)。 現在,我按下“向下箭頭鍵”以選擇一個字符串。 第一次按下按鈕時,選擇了“ abc”字符串。 第二次按下按鈕時,選擇了“ alpha”字符串。

問題是通過按UP和DOWN箭頭鍵更改字符串選擇不會更改文本控件的值。 我希望通過按UP和DOWN箭頭鍵更改選定的字符串時更新文本控件的值。

我以為如果知道事件名稱,就可以手動執行此操作。 因此,問題是:通過按向上和向下箭頭鍵從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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM