私は、ユーザー入力用に2つのTextControlを持つWxWidgetパネルを持っています。 1つのTextControl入力は、他の入力フィールドの値を変更します。私は1つTextControl内のテキストが変更されたときに特定のポイントでwxWidgetsイベントを抑制して、相互の処理を防止します
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
}
問題は、それが正しく他の値を変更している... EVT_COMMAND_TEXT_UPDATEイベントを使用し、「OnValueChanged」のような関数にそれを結合しました。しかし、他の入力でテキストが変更されるとすぐに、TEXT_UPDATEイベントが発生し、現在のユーザーの入力が更新され、面白いカーソルのジャンプなどが発生します。
値を変更しながらこれらのイベントを実行することは可能ですか他のTextControlのTEXT_UPDATEイベントは発生しません。ユーザーがこのテキストコントロールに対して何らかの入力を行った場合、通常どおりに動作するはずです。
どうもありがとう – Benjamin