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

お世話になります。
VB初心者です。VBでフォームを作り、TEXTBOXを複数作ると、Tabキーでタブストップの順番にカーソルが移動しますが、Enterを押すとカーソルが移動するようにするのはどうしたら良いのでしょうか?
宜しくお願いします。

A 回答 (2件)

 


TextBox_KeyPress イベントでKeyAsciiを無効にした後、

(1) 移動先のコントロールにSetFocusする。
(2) SendKeysで<TAB>キーの仮想キーコードを送信する。
(3) Win32APIのkeybd_eventで     〃

のいずれかで可能です。それぞれの長所、短所は、

(1) タブオーダーの仕変のたびにコードの保守が必要。(保守性劣悪)
(2) NumLock、CapsLockが解除される場合がある、等、問題が多い。
(3) 古いAPIである。(SendMessage等で記述するのが望ましい??)

(2)のコード例は下記。

Private Sub TextBox_KeyPress(KeyAscii As Integer)
  If KeyAscii = vbKeyReturn Then
    KeyAscii = 0
    SendKeys {TAB}, True
  End If
End Sub

私の知る限り、VBでは(1)~(3)ぐらいしか方法が無さそうですが、他によい方法があれば、他の人のコメントが付くでしょう。
    • good
    • 0
この回答へのお礼

有難うございました。ばっちりいけました。コーディング例と詳しい長所短所までコメントいただき恐れ入ります。
結局
If KeyAscii = vbKeyReturn Then
    KeyAscii = 0
    オブジェクト名.Setfoucs
  End If
でいきます。

お礼日時:2003/03/05 11:49

キー入力のイベントで エンターキーだったら 移動させたいところにセットフォーカスしてあげます。



また、シフト+エンターキーの処理も必要かと思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2003/03/05 11:46

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