こんなのはどうでしょう?
form2に2つのtextboxを用意します。(フォーカスを持てるコントロールなら何でもいいんだけど)
名前をdummy0,dummy1とします。
見えないように、BorderStyle=none,ReadOnly=trueにします。
dummy0のtabindexを0,dummy1のtabindexをform2の最大tabindex+1にします。
これでform2の最初のtabストップがdummy0,最後がdummy1になります。
各々のgotfocusを以下にします。
以上で、たぶん希望の動きをすると思いますが・・・
Private Sub dummy0_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles dummy0.GotFocus
If Control.ModifierKeys And Keys.Shift = Keys.Shift Then 'shiftキーが押されている?
Me.Parent.SelectNextControl(Me, False, True, True, True) '親の前へ
Else
Me.SelectNextControl(Me.ActiveControl, True, True, True, True) '次へ
End If
End Sub
Private Sub dummy1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles dummy1.GotFocus
If Control.ModifierKeys And Keys.Shift = Keys.Shift Then 'shiftキーが押されている?
Me.SelectNextControl(Me.ActiveControl, False, True, True, True) '前へ
Else
Me.Parent.SelectNextControl(Me, True, True, True, True) '親の次へ
End If
End Sub
お礼
上手くいきました! 希望通りの動作をしてくれて満足しています。 ありがとうございました。 ただ、回答してくださったコードをGotFocusイベントではなく、 Enterイベントに記述しても上手くいかないのはなぜなのでしょうか? .NETからはGotFocusイベントはEnterイベントに変更されたと思い込んでいたので、 少し気になります。 (そもそもGotFocusとEnterの違いがわかっていない…)