• ベストアンサー

Enterキーでもコントロール間を移動するには?

通常はデフォルトで、コントロール間を移動するにはTABキーとなっていますが、コントロールのプロパティのTabIndexで、その移動順序を数字で指定するようになっていると思うのですが、このコントロール間を移動をEnterキーでも行えるようにしたいと思っています。 どのような方法(プロパティ設定?コード記述?)が必要となりますか? よろしくお願い致します。

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

  • ベストアンサー
  • souta_n
  • ベストアンサー率33% (79/234)
回答No.2

あったあった!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

THUBAN
質問者

補足

わざわざ、再回答ありがとうございました。 これは、VB6のコードですか? 当方は、VB.NET環境下なのです。^^; 前回の投稿文に補足回答させていただいたとおり、解決しましたが、逆移動させるパターンが不明です。 もし、お分かりでしたら、よろしくお願い致します。

その他の回答 (2)

  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.3

「SelectNextControl」メソッドをググってみればヒントはつかめるかな ちなみに欲しい情報はこれだと思いますが http://www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html

THUBAN
質問者

お礼

すでに同じサイト、一足先にgooで見つけてしまってました・・ で、その後、いろいろと調べた結果、解決いたしました。 遅くなり、すいません。 どうも、ありがとうございました!

  • souta_n
  • ベストアンサー率33% (79/234)
回答No.1

やったことあるんだけどなぁ・・・はっきりコード書けるほどおぼえてないなぁ でも、理屈的には、KeyDownかkeyPressイベントで、移動させたいテキストボックスにSetfocusするんです。 あぁ思い出せない、気持ち悪い・・・

THUBAN
質問者

補足

ありがとうございます。 あの後、自己解決しました。 コードは以下で上手く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