• ベストアンサー

KeyUpイベントにて

テキストボックスのKeyUpイベントにて『Enter』または『Tab』が押されたら処理をさせようと Private Sub Text_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Text.KeyUp If e.KeyCode = Keys.Enter or e.KeyCode = Keys.Tab Then   処理コード End If End Sub としたのですが『Enter』のときしか処理コードが反映されません ご教授お願いします

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

  • ベストアンサー
回答No.1

TextBoxにTabキーの押し放しを認識させる方法は、フォームの全てのTabStop を False にする方法があります。通常の動作である、Tabキーによるコントロールの移動が出来なくなり、犠牲は大きいです。 Tabキーによって次のコントロールにフォーカスが移ってしまうことを逆に利用して、TextBoxの次にフォーカスが移るダミー的なコントロールを配置する方法もあります。ダミーのコントロールにフォーカスが来たら、TextBoxでTabが押されたと判断することも、TextBoxにフォーカスを戻すこともできると思います。 あるいは、テキストボックスからフォーカスがはずれる直前のイベントを捕らえる方法もあります。Validatingイベントについて調べてみて下さい。

Alshark
質問者

お礼

ありがとうございます まだまだ多くのイベントがあるんですね 調べて挑戦したいと思います。

その他の回答 (1)

回答No.2

『Tab』が押された事を取得したいのなら、Win32 API 関数の GetKeyState を使って取得する事ができます。 又、ProcessCmdKeyメソッドをオーバーライドして、ProcessCmdKey内で If keyData = Keys.Tab Then のようにして取得する事ができますが、 取得して、何をしたいのかによって、違った方法があるかも知れません。 回答する方にとっては、そちらの方が気になります。 詳しいコード等は、それぞれのメソッド名なり、関数名なりで検索すれば、見つかるかと思います。

Alshark
質問者

お礼

回答ありがとうございます。 コードの使用方法としてはログイン画面を作成してまして、 TEXT1にIDを入力して『Enter』または『Tab』が押されたら TEXT2に処理(検索)後、指名を表示といった動きにさせたいのです。 まだまだ素人なのでわからないことだらけです。 日々努力していきたいと思います

関連するQ&A