У меня есть панель 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
}
Проблема в том, что когда текст в одном TextControl изменяется, он правильно изменяет значение другого. Но, как только текст изменяется в другом вводе, он вызывает собственное событие TEXT_UPDATE и обновляет текущие вводы пользователей, что приводит к забавным скачкам курсора и т. д.
Можно ли обеспечить выполнение этих событий при изменении значения другого TextControl, чтобы он не поднимал свое событие TEXT_UPDATE? Если пользователь сам что-то вводит в этот текстовый элемент управления, он должен работать как обычно.