- ベストアンサー
Enterキーでもコントロール間を移動するには?
通常はデフォルトで、コントロール間を移動するにはTABキーとなっていますが、コントロールのプロパティのTabIndexで、その移動順序を数字で指定するようになっていると思うのですが、このコントロール間を移動をEnterキーでも行えるようにしたいと思っています。 どのような方法(プロパティ設定?コード記述?)が必要となりますか? よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あったあった!HDDひっくり返してむかし作ったソースを見つけたぞ! え~、例えばテキストボックスが3つ項目1、項目2、項目3とあって、項目2でエンター又は下矢印を押すと項目3に、上矢印を押すと項目1に移動させるコードは次の通りです。 Private Sub 項目2_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 13, 40 Me!項目3.SetFocus Case 38 Me!項目1.SetFocus End Select End Sub
その他の回答 (2)
- AlexSuns
- ベストアンサー率67% (78/115)
「SelectNextControl」メソッドをググってみればヒントはつかめるかな ちなみに欲しい情報はこれだと思いますが http://www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html
お礼
すでに同じサイト、一足先にgooで見つけてしまってました・・ で、その後、いろいろと調べた結果、解決いたしました。 遅くなり、すいません。 どうも、ありがとうございました!
- souta_n
- ベストアンサー率33% (79/234)
やったことあるんだけどなぁ・・・はっきりコード書けるほどおぼえてないなぁ でも、理屈的には、KeyDownかkeyPressイベントで、移動させたいテキストボックスにSetfocusするんです。 あぁ思い出せない、気持ち悪い・・・
補足
ありがとうございます。 あの後、自己解決しました。 コードは以下で上手くTabIndex正順にEnterキー押下で移動してくれました。 もし、その逆のパターンが、 つまり、BackSpaceキーで、TabIndex逆順に移動する方法がわかれば、ご教授下さいませ。 「Chr(Keys.Enter)」を「Chr(Keys.Back)」とすれば、BackSpaceキーとなることはわかったのですが・・ --------------------------------------- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.KeyPreview = True End Sub Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress If e.KeyChar = Chr(Keys.Enter) Then Me.SelectNextControl(Me.ActiveControl, True, True, True, True) e.Handled = True End If End Sub
補足
わざわざ、再回答ありがとうございました。 これは、VB6のコードですか? 当方は、VB.NET環境下なのです。^^; 前回の投稿文に補足回答させていただいたとおり、解決しましたが、逆移動させるパターンが不明です。 もし、お分かりでしたら、よろしくお願い致します。