【发布时间】:2012-07-11 08:08:14
【问题描述】:
我有一个关于 wxWidgets 2.9 和 wxComboBox 自动完成功能的问题。下面是我的事件表,它接受我的 ComboBox 的 ENTER 事件,在输入时我触发 OnComboEnter。如果这样做,我将无法从 AutoComplete 列表中选择一个项目,因为它直接对用户键入 ComboBox 的文本执行 OnComboEnter 方法。
BEGIN_EVENT_TABLE(LVFilterPanel, wxPanel)
EVT_TEXT_ENTER(wxID_ANY, LVFilterPanel::OnComboEnter)
EVT_CONTEXT_MENU(LVFilterPanel::OnComboContextMenu)
END_EVENT_TABLE()
我的 ComboBox 是这样声明的:
mFilterString = new wxComboBox(this, LV_FILTER_STRING, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, 0, wxTE_PROCESS_ENTER);
AutoComplet 是使用 wxWidgets 2.9 中的默认 AutoComplete 方法完成的:
mFilterString->AutoComplete(historyarr);
historyarr 是一个 wxArrayString,其中填充了用户之前输入的字符串。 OnComboEnter 方法如下所示:
void LVFilterPanel::OnComboEnter(wxCommandEvent& event) {
wxCommandEvent ce(wxEVT_COMMAND_BUTTON_CLICKED, LV_FILTER);
static_cast<wxButton*>(FindWindow(LV_FILTER))->Command(ce);
}
我现在的问题是,如何更改事件处理,使其能够先选择项目然后处理 OnComboEnter,以便用户能够先选择项目(或者可能无法在all 并直接按回车键启动事件和 OnComboEnter 方法)。 提前致谢。
你好,
罗因
【问题讨论】:
-
+1 表达良好的问题
标签: c++ event-handling wxwidgets