• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:タブ移動で最後のTabIndexまで行くと頭から繰り返さないようにしたい)

タブ移動で最後のTabIndexまで行くと頭から繰り返さないようにする方法

このQ&Aのポイント
  • VB.NET環境において、タブ移動で最後のTabIndexまでカーソルが行くと、繰り返しを止める方法を教えてください。
  • また、逆タブ(Shift+Tab)を押すと、最初のTabIndexのコントロールまでバックさせる方法も教えてください。
  • 現在はEnterキーを使用してタブ移動させていますが、他に良い方法があれば教えてください。

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

  • ベストアンサー
  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと です。 Tab の捕捉について解答します。 Tab キーの捕捉は ProcessDialogKey などをオーバーライドしてください。 # 他にも方法はありますが。

THUBAN
質問者

お礼

ありがとうございました! 以下のコードを入れることで、Case Keys.Tab を通過するようになりました。 Protected Overrides Function ProcessDialogKey(ByVal Tab As Keys) As Boolean End Function

その他の回答 (1)

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 > Me.SelectNextControl(Me.ActiveControl, forward, True, True, True) 最後の引数を False にするだけですよね。 Tab キーの捕捉時を同じ様にすれば良いわけです。 > 逆タブ(Shift+Tab)を押すと、TabIndexをさかのぼって、最初のTabIndexのコントロールまでバックさせたいです。 これは実装するしかないですね。 単純に TabIndex を見るのか、何かのプロパティに格納するかなどすると良いでしょう。 最終的なコントロールの位置も同様の実装が必要です。

THUBAN
質問者

補足

ご回答ありがとうございます。 Enterキーを使ってのタブ移動は、SelectNextControlの最後の引数を False にするだけで、実現できました。 ただ、Tabキーを使ったタブ移動も、同じようにしたいのですが。 Case文に、Keys.Tabを追加してみましたが、Tabキー押下時のイベントが発生しても、Case Keys.Tab には飛んでくれないようです。 Tabキー押下時のイベントは、何か別な方法で取得しなければなりませんかね? 最初のTabIndexと最後のTabIndexを見て、タブ移動を止める処理を追加するとしても、Tabキー押下時のイベントが取れないと実現できないのかな・・と思いまして。  ・  ・  ・  Case Keys.Tab   Dim bThrough As Boolean = False   If TypeOf Me.ActiveControl Is Edit Then    If (CType(Me.ActiveControl, Edit)).Multiline = True Then     bThrough = True    End If   End If   If bThrough = False Then    Dim forward As Boolean = e.Modifiers <> Keys.Shift    'this.ProcessTabKey(forward);    Me.SelectNextControl(Me.ActiveControl, forward, True, True, False)   End If  ・  ・  ・

関連するQ&A