Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

タブキー押下時のイベントをひろいたい。

テキストボックスにフォーカスがあり、TABキーが押された時のイベントをひろいたいのですが、KeyPressもKeyDownもイベントが発生しません。 (If KeyCode = vbKeyTab Then  MsgBox "タブキー" End If  If KeyAscii = vbKeyTab Then ~ のようなコードを記述してもメッセージが表示されない) ヘルプにはKeyDownでは発生しないという記述がありますが、KeyPressではイベントがひろえるようなことが書いてあるのにひろえないので困っています。 なにかよい方法はありませんでしょうか。 わかりにくい説明で申し訳ありませんが困ってます。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osaosa42
  • ベストアンサー率60% (20/33)
回答No.3

テキストボックスのほかに、コントロールを貼り付けていませんか? 他のコントロールにタブ移動していてイベントがこなくなっているのでは? フォーカスを当てられるほかのコントロールのTabStopをFalseにすればいいのでは? 違ってたらすんません。 じゃ、そゆことで。

terako
質問者

お礼

貼り付けてました・・・。 見た目は全部ラベルだったのでおかしいなとよくよく見たらテキストボックスの不活性継承の為のピクチャボックスがTabstop=Trueになってました。 おかげさまで無事TAB拾えました。どうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

確かにKeyPressでTABキーを拾えませんね(VB4) 対処方法は参考URLにあります

参考URL:
http://www.kit.co.jp/vbit/QAndA01.htm
terako
質問者

お礼

為になる参考URL教えていただきありがとうございました。無事解決しました。

すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

KeyPressイベントなら、次のどれでも出来るはずです。(確認済) 例1) Dim str As String str = Chr(KeyAscii) If str = vbTab Then MsgBox "Tab key!" End If 例2) If KeyAscii = 9 Then MsgBox "Tab key!" End If 例3) If KeyAscii = vbKeyTab Then MsgBox "Tab key!" End If

terako
質問者

お礼

動作確認までして頂いて、丁寧なご回答どうもありがとうございました。 無事解決しました。ありがとうございます。

すると、全ての回答が全文表示されます。
  • itohh
  • ベストアンサー率45% (210/459)
回答No.1

こんにちは。itohhといいます。 KeyPressとKeyDownイベントの引数ですが、意味合いが違います。 KeyPressイベントのKeyAsciiは、Asciiコードが設定されてきます。 KeyDownイベントのKeyCodeは、VBで決めているキーコード定数が設定されてきます。 KeyPressイベントでTabを拾いたい場合は、以下のように行います。 Private Sub Text1_KeyPress(KeyAscii As Integer)   Dim Rtn As Integer   If KeyAscii = Asc(vbTab) Then     Rtn = MsgBox("Hit!!", vbOKOnly)   End If End Sub

terako
質問者

お礼

質問時にコピーしてコードを書いてしまったのでKeyPressとKeyDownのコードを同じにしてしまいました・・・。間違いのご指摘ありがとうございます。 無事解決しました。どうもありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A