電子書籍の厳選無料作品が豊富!

テキストボックスで、2バイト入力されたらTABで次のテキストボックス
に移動すると言うイベントを4つのテキストボックスのKeyUpイベント
に記述しました。

サンプルとして一つ書きます。
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If Len(Text1.Text) = 2 Then
SendKeys "{TAB}"
KeyCode = 0
End If
End Sub

上記のソースでプログラムを実行し、Text1に2バイト入力されると、
次のテキストボックス(Text2)に移動します。
更にText2,Text3に、2バイト入力しますと、カーソルがText4に来ます。
ここで、マウスでText1にカーソルを持っていき、値を変更すると、
Text2に移動するはずが、Text4にカーソルが移動します。
なぜでしょうか??

くだらない質問ですが、よろしくお願いします。

A 回答 (5件)

mk100さん こんにちは。



MaxLengthプロパティが設定されてるのではないですか?
違ったらごめんなさい。
    • good
    • 0
この回答へのお礼

レスありがとうございます。

確かにMaxLengthに「2」と設定してあります。
先ほど、MaxLengthの設定をはずしても、同じ現象
が発生します。

他に原因があるのでしょうか?

お礼日時:2003/07/09 15:59

#2です。


処理としてTab移動を使わなければならないのでしょうか?
もし、カーソルを移動させればよいというのであれば、
「SetFocus」を使ったらダメですか?
If Len(Text1.Text) = 2 Then
Text2.SetForcus
End If
という感じで。

現状ではちょっと私にはわかりかねます・・・
すいません。
もしかしたら、テキストボックスが複数ありますけど、
コントロール配列にしてませんか?

サンプルをコピーして試しにやってみましたけど、
私のほうではちゃんと次のテキストボックスに
移動します。
    • good
    • 0
この回答へのお礼

どうも原因は一度入力した値を変更すると、それ以降の
テキストボックスのKeyUpイベントが発生するため
教えていただいた方法でも同じ現象が発生すると
思われます。

何でKeyDownイベントは良くて、KeyUpイベントは
駄目なんでしょうね?なぞです・・・

お礼日時:2003/07/09 16:25

#1です。



たびたびすいません。
タブオーダーの順番が間違ってるんじゃないですか?
    • good
    • 0
この回答へのお礼

度々ありがとうございます。

原因はKeyUpイベントに問題があるようです。
これってバグですかね???

お礼日時:2003/07/09 16:26

#1です。



とりあえずイベントプロシージャのどこかにmsgboxでもかましてみて、
何回イベント処理が発生しているか確認してみては。
    • good
    • 0
この回答へのお礼

msgboxをかまし、一度入力したテキストボックスを変更
すると、全てのテキストボックスのKeyUpイベントが発生
して次から次へとTABでカーソルが移動してしまう事が
判明しました。
で、なぜ??何ですけど、これをKeyDownイベントにして
「If Len(Text1.Text) = 2 Then」の部分を
「If Len(Text1.Text) = 1 Then 」としてみた所、
こちらでは上手く動作します。

なので、これでとりあえず希望どおりに出来たので、良し
という所です。
色々お手数をおかけしました。

お礼日時:2003/07/09 16:22

憶測でしかないですけど、


途中のテキストボックスのTabStopは「True」に
なっていますか?
    • good
    • 0
この回答へのお礼

レスありがとうございます。

TabStopは全て(Text1~Text4)Trueになっております。
逆にTabStopをFalseにしてしまうと、Text2~Text4を
飛び越えて、他のオブジェクトにカーソルが移動してし
まいます。

お礼日時:2003/07/09 16:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!