4.Enter キー及び↑↓キーによるフォーカス移動(23_Txt_04) (旧、SampleNo.043) |
1.Enter キー及びカーソル移動(↑↓)キーによるフォーカス移動 2. 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.Enter キー及びカーソル移動(↑↓)キーによるフォーカス移動 |
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load '別途 Form1のプロパティで設定してもOKです。 Me.KeyPreview = True End Sub Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles MyBase.KeyPress 'Enterキーが押された事を取得() If e.KeyChar = Chr(Keys.Enter) Then e.Handled = True 'KeyPress イベントをキャンセル(Beep音を消音に) End If End Sub Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown 'Button コントロール上で発生したイベント分は無視する If butEnter = True Then butEnter = False e.Handled = True Exit Sub End If If e.KeyCode = Keys.Enter Or e.KeyCode = Keys.Up Or e.KeyCode = Keys.Down Then '除外したい TextBox がある場合 'If Me.ActiveControl.Name = "TextBox5" Then Exit Sub 'TextBox だけに限定する場合 'If TypeOf (Me.ActiveControl) Is TextBox = False Then Exit Sub Dim sh As Boolean = e.Shift ' ↓ If e.KeyCode = Keys.Up Then ' ↑ sh = True End If 'ProcessTabKey メソッド() '次に使用できるコントロールを選択し、そのコントロールをアクティブにします。 ProcessTabKey(Not sh) e.Handled = True End If End Sub 'Button コントロールも移動の対象に含める場合 Private butEnter As Boolean Private Sub Button1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Button1.PreviewKeyDown If e.KeyCode = Keys.Enter Then e.IsInputKey = True 'Button1_Click イベントが発生しないようにする ProcessTabKey(Not e.Shift) '次のコントロール上で Enter イベントが発生するので、2個先に移動するのを防止するため butEnter = True 'e.Handled = True のような操作ができないので(下記でもいいのだが)) ' ProcessTabKey(e.Shift) '行き過ぎるので1個戻す End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 'Button1_Click イベントが発生しない事を確認のために。 MessageBox.Show("Button1 が Click されました") End Sub 図1.上記実行結果 Enter キーによるフォーカス移動は、色々な方法がありますが、できるだけ色んな要望に対応できるようにと思い 上記のように色んなコントロールが配置されていても動作するように設定してみました。 |
2. |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |