在wxWidgets中修改了文本之后调用事件处理程序

时间:2011-01-19 04:14:47

标签: c++ wxwidgets

我正在尝试在我的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!");
}

消息框总是弹出“一个字符”太晚了。

1 个答案:

答案 0 :(得分:1)

正如@ravenspoint所提到的,这个事件应该在更改之后被触发,但是我也想指出即使在更改之前触发事件的情况下,更改几乎总是通过使用event参数进入事件处理程序。

因此,对于这种情况,您可能只想检查correctTextBoxes()中event.GetString()的值,以查看在文本控件上设置的新值。