09-12-2012, 11:06 AM
こんにちわ。
TextFieldなどのコントロールでKeyPressイベントを行っているのですが、
たとえば、TextField(以後TF)に何か入力してEnterを押したとします。
TFの処理内容は、TFの内容チェックと変換、最後にAfterを使って次のフォーカス場所にBecome-activeをしています
設定でEnterの動作はTabと同じ設定にしておりますので次のフォーカスに移動します。
通常ならそうなのですが、
TF1に入力し、Enterを押すところを連打します。
するとTF1→TF2→TF3とフォーカスが移るはずなのですが、その最後のBecome-activeが処理されて
あたかもTF3からTF2へフォーカスが巻き戻ったかのように見えてしまいます。
初めはAfterが悪さしているのかと思いAfterを外し、試験的に処理内にSleepを入れ疑似的に処理を重くして
実験してみたのですが、やはり巻き戻ってしまします。
自分の考えでは、Enterを押した処理中は他のキー操作を受け付けないようにしたいのですが
そのようなことはできるのでしょうか?
もしくは、巻き戻りを解消する方法はありますでしょうか?
TextFieldなどのコントロールでKeyPressイベントを行っているのですが、
たとえば、TextField(以後TF)に何か入力してEnterを押したとします。
TFの処理内容は、TFの内容チェックと変換、最後にAfterを使って次のフォーカス場所にBecome-activeをしています
設定でEnterの動作はTabと同じ設定にしておりますので次のフォーカスに移動します。
通常ならそうなのですが、
TF1に入力し、Enterを押すところを連打します。
するとTF1→TF2→TF3とフォーカスが移るはずなのですが、その最後のBecome-activeが処理されて
あたかもTF3からTF2へフォーカスが巻き戻ったかのように見えてしまいます。
初めはAfterが悪さしているのかと思いAfterを外し、試験的に処理内にSleepを入れ疑似的に処理を重くして
実験してみたのですが、やはり巻き戻ってしまします。
自分の考えでは、Enterを押した処理中は他のキー操作を受け付けないようにしたいのですが
そのようなことはできるのでしょうか?
もしくは、巻き戻りを解消する方法はありますでしょうか?