- ベストアンサー
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』のときしか処理コードが反映されません ご教授お願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
TextBoxにTabキーの押し放しを認識させる方法は、フォームの全てのTabStop を False にする方法があります。通常の動作である、Tabキーによるコントロールの移動が出来なくなり、犠牲は大きいです。 Tabキーによって次のコントロールにフォーカスが移ってしまうことを逆に利用して、TextBoxの次にフォーカスが移るダミー的なコントロールを配置する方法もあります。ダミーのコントロールにフォーカスが来たら、TextBoxでTabが押されたと判断することも、TextBoxにフォーカスを戻すこともできると思います。 あるいは、テキストボックスからフォーカスがはずれる直前のイベントを捕らえる方法もあります。Validatingイベントについて調べてみて下さい。
その他の回答 (1)
- vbhanatyan
- ベストアンサー率79% (70/88)
『Tab』が押された事を取得したいのなら、Win32 API 関数の GetKeyState を使って取得する事ができます。 又、ProcessCmdKeyメソッドをオーバーライドして、ProcessCmdKey内で If keyData = Keys.Tab Then のようにして取得する事ができますが、 取得して、何をしたいのかによって、違った方法があるかも知れません。 回答する方にとっては、そちらの方が気になります。 詳しいコード等は、それぞれのメソッド名なり、関数名なりで検索すれば、見つかるかと思います。
お礼
回答ありがとうございます。 コードの使用方法としてはログイン画面を作成してまして、 TEXT1にIDを入力して『Enter』または『Tab』が押されたら TEXT2に処理(検索)後、指名を表示といった動きにさせたいのです。 まだまだ素人なのでわからないことだらけです。 日々努力していきたいと思います
お礼
ありがとうございます まだまだ多くのイベントがあるんですね 調べて挑戦したいと思います。