У меня есть панель WxWidget с двумя TextControls для пользовательского ввода.Один ввод TextControl изменяет значение другого поля ввода.Я использовал событие EVT_COMMAND_TEXT_UPDATE и связал его с функцией, подобной «OnValueChanged» ...
mTextCtrl1->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(MyClass::OnTextCtrlChanged1), NULL, this);
mTextCtrl2->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(MyClass::OnTextCtrlChanged2), NULL, this);
void MyClass::OnTextCtrlChanged1(wxCommandEvent &event) {
// ...
mTextCtrl2->SetValue(...); // Set a Hex value of entered Value in text ctrl 1
}
void MyClass::OnTextCtrlChanged2(wxCommandEvent &event) {
// ...
mTextCtrl1->SetValue(...); // Set a Integer value of entered Value in text ctrl 2
// at this point, MyClass::OnTextCtrl1 is handled,
// but should not, only if user himself enters something
}
Проблема в том, что при изменении Text в одном TextControl значение другого корректно изменяется.Но, как только текст изменяется в другом вводе, он вызывает свое собственное событие TEXT_UPDATE и обновляет текущие пользовательские вводы, что приводит к забавным скачкам курсора и т. Д.
Можно ли обеспечить выполнение этих событий при изменениизначение другого TextControl, чтобы оно не вызывало событие TEXT_UPDATE?Если пользователь самостоятельно вводит данные в этот текстовый элемент управления, он должен работать как обычно.