Вызов обработчика события после изменения текста в wxWidgets - PullRequest
1 голос
/ 19 января 2011

Я пытаюсь создать ситуацию в моем приложении wxWidgets, где пользователь может что-то ввести в текстовое поле, и если в текстовом поле есть один или несколько символов, другие элементы управления становятся включенными.Поэтому я создал обработчик события, который проверяет TextBox-> IsEmpty () на событие wxEVT_COMMAND_TEXT_UPDATED.Однако, кажется, это вызывается до того, как произойдут изменения в тексте в текстовом поле.Есть ли способ вызвать событие после того, как произошли изменения?Спасибо.

РЕДАКТИРОВАТЬ: код, который я использую.Я использую 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 Ответ

1 голос
/ 20 января 2011

Как уже упоминалось @ravenspoint, это событие должно было быть запущено после внесения изменения, но я также хотел отметить, что даже в тех случаях, когда событие запускается непосредственно перед внесением изменения, изменение почти всегда передается в ваш обработчик событий с параметром события.

Так что в этом случае вы можете просто проверить значение event.GetString () в correctTextBoxes (), чтобы увидеть, как новое значение устанавливается в текстовом элементе управления.

...