我正在尝试在我的wxWidgets应用程序中创建一个用户可以在文本框中键入内容的情况,如果文本框中有一个或多个字符,则其他控件将启用。因此,我创建了一个事件处理程序,用于检查事件wxEVT_COMMAND_TEXT_UPDATED上的TextBox-> IsEmpty()。但是,在对文本框中的文本进行更改之前,似乎会调用此方法。发生更改后,有没有办法让事件触发? 谢谢。
编辑:我正在使用的代码。 我正在使用Connect()来设置事件处理,因此没有事件表可以说。这是我正在使用的代码:
cur->mTextBox = new wxTextCtrl(mParentFrame, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize);
mParentFrame->Connect(wxID_ANY, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(iguiFrame::correctTextBoxes));
correctTextBoxes是我的wxFrame派生类的公共方法,它调用一个只包含以下代码的函数:
if(cur->mTextBox->IsEmpty())
{
wxMessageBox("Empty!");
}
消息框总是弹出“一个字符”太晚了。
答案 0 :(得分:1)
正如@ravenspoint所提到的,这个事件应该在更改之后被触发,但是我也想指出即使在更改之前触发事件的情况下,更改几乎总是通过使用event参数进入事件处理程序。
因此,对于这种情况,您可能只想检查correctTextBoxes()中event.GetString()的值,以查看在文本控件上设置的新值。