2.TextBox コントロールへのフォーカス移動時の操作色々(23_Txt_02) (旧、SampleNo.040) |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.TextBox で発生するフォーカスイベント及びその順序 |
キーボード (Tab、Shift + Tab など) を使用するか、Select メソッドまたは SelectNextControl メソッドを呼び出すか、 ContainerControl.ActiveControl プロパティを現在のフォームに設定してフォーカスを変更するとき、 次の順序でフォーカスイベントが発生します。 1. Enter コントロールが入力されると発生します。 2. GotFocus コントロールがフォーカスを受け取ると発生します。 3. Leave 入力フォーカスがコントロールを離れると発生します。 4. Validating コントロールが検証しているときに発生します。 5. Validated コントロールの検証が終了すると発生します。 6. LostFocus コントロールがフォーカスを失ったときに発生します マウスを使用するか Focus メソッドを呼び出してフォーカスを変更するとき、フォーカスイベントは次の順序で発生します。 1. Enter 2. GotFocus 3. LostFocus 4. Leave 5. Validating 6. Validated CausesValidation プロパティが false に設定されている場合、Validating イベントおよび Validated イベントは発生しません。 こういった処理の場合、VB6.0の時は、GotFocus 及び LostFocus イベントを使用していましたが、MSDN の解説によると GotFocus イベントおよび LostFocus イベントは、Windows メッセージ WM_KILLFOCUS および WM_SETFOCUS に結び付けられた、 下位のフォーカスイベントです。 一般的に、GotFocus イベントおよび LostFocus イベントは、UICues を更新するとき、または カスタムコントロールを作成するときにだけ使用されます。 代わりに、Activated イベントおよび Deactivate イベントを使用する Form クラスを除くすべてのコントロールに、Enter イベントおよび Leave イベントを使用する必要があります。 と記されています。 |
2.TextBox にフォーカスが移った時、すべてのテキストを選択状態にする |
Private Sub TextBox2_Enter(sender As Object, e As EventArgs) Handles TextBox2.Enter 'TextBoxBase.SelectAll メソッド 'テキストボックスのすべてのテキストを選択します。 TextBox2.SelectAll() End Sub |
3.TextBox にフォーカスが移った時、3桁目から5文字選択状態にする |
Private Sub TextBox3_Enter(sender As Object, e As EventArgs) Handles TextBox3.Enter 'Select メソッド 'テキストボックスでテキストの範囲を選択します。 '3桁目から5文字選択する TextBox3.Select(2, 5) '又は 'TextBox3.SelectionStart = 2 'TextBox3.SelectionLength = 5 End Sub |
4.TextBox にフォーカスが移った時、文字列の後尾に移動する |
Private Sub TextBox4_Enter(sender As Object, e As EventArgs) Handles TextBox4.Enter 'SelectionStart プロパティ 'テキストボックスで選択されているテキストの開始点を取得または設定します。 'TextLength プロパティ 'コントロールのテキストの長さを取得します。 '文字列の後尾に移動する TextBox4.SelectionStart = TextBox4.TextLength End Sub |
5.TextBox にフォーカスが移った時、指定の文字を選択状態にする |
Private Sub TextBox5_Enter(sender As Object, e As EventArgs) Handles TextBox5.Enter '指定の文字を選択状態にする Dim target As String = "かき" '指定した文字がこのインスタンス内で最初に見つかった位置を取得 Dim findPos As Integer = TextBox5.Text.IndexOf(target) If findPos > -1 Then '見つかった場合の処理 TextBox5.Select(findPos, target.Length) Else '見つからなかった場合の処理 TextBox5.SelectionStart = TextBox5.TextLength End If End Sub |
6.TextBox にフォーカスが移った時、背景色と前景色を設定する |
Private Sub TextBox6_Enter(sender As Object, e As EventArgs) Handles TextBox6.Enter '背景色と前景色を設定する With TextBox6 .SelectionStart = .TextLength '選択状態にならないように .BackColor = Color.Yellow .ForeColor = Color.Red End With End Sub Private Sub TextBox6_Leave(sender As Object, e As EventArgs) Handles TextBox6.Leave '背景色と前景色を元に戻す TextBox6.BackColor = Color.FromKnownColor(System.Drawing.KnownColor.Window) TextBox6.ForeColor = Color.FromKnownColor(System.Drawing.KnownColor.WindowText) End Sub |
検索キーワード及びサンプルコードの別名(機能名) |
テキストボックス テキストボックス |