【】Top

【】VB.NET
【】VB6.0

【】メールマガジンの購読
【】メールマガジンの解除






【】会社概要

【】お問い合わせ


姉妹サイト「バーチャルコネクション!」はこちらです。

姉妹サイト「七福神のメールでビンゴ!」はこちらです。

アイネットマコト

●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。






フォーカスの移動

【注意書き】
●VB.NET を使っているものとします。
●動作環境は、Windows XX を使用しているとします。


.NET でも、リターンキーや矢印キーで
フォーカスの移動をさせることが可能です。

この機能を使えば、簡単に、
リターンキーなどの確定キーを押すことで、
入力項目を移動していくといった
アプリケーションを作成することができます。



フォームに次の様なコードを記述します


-----------VB.NETコーディングここから-------------------


1.フォームに、テキストボックスコントロール、
    を配置します。
    下記は、デフォルトのオブジェクトの名前と配置を示しています。

   ┏━━━━━━━━━━━┓
   ┃TextBox1              ┃
   ┗━━━━━━━━━━━┛
   ┏━━━━━━━━━━━┓
   ┃TextBox2              ┃
   ┗━━━━━━━━━━━┛
   ┏━━━━━━━━━━━┓
   ┃TextBox3              ┃
   ┗━━━━━━━━━━━┛


2.フォームをダブルクリックして、
    フォームロードイベントのコード編集を開始して、
    次のコードを記述します。


    Dim MjlngFocus As Long      '現在のフォーカス位置
    Dim MjlngFocusMAX As Long   'フォーカス移動可能な最大値
    Dim MjlngCON() As Long      'フォーカス移動可能な配列
    Dim MjobjCON() As Control   'フォーカス移動可能な配列



    Private Sub TextBox1_KeyDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles TextBox1.KeyDown
        Call KEY_DOWN(sender, e)
    End Sub

    Private Sub TextBox2_KeyDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles TextBox2.KeyDown
        Call KEY_DOWN(sender, e)
    End Sub

    Private Sub TextBox3_KeyDown(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.KeyEventArgs) _
    Handles TextBox3.KeyDown
        Call KEY_DOWN(sender, e)
    End Sub

    Sub KEY_DOWN(ByVal PiobjCON As Control, _
    ByVal e As System.Windows.Forms.KeyEventArgs)

        Dim txt As TextBox

        Select Case e.KeyCode.ToString
            Case "Enter"
                '次へ
                MOV_FOCUS(PiobjCON, 1)
            Case "Down"
                '次へ
                MOV_FOCUS(PiobjCON, 1)
            Case "Up"
                '前へ
                MOV_FOCUS(PiobjCON, -1)
            Case Else
        End Select

        'テキストボックスならば選択状態にする
        If TypeName(MjobjCON(MjlngCON(MjlngFocus))) _
            = "TextBox" Then
            txt = MjobjCON(MjlngCON(MjlngFocus))
            txt.SelectAll()
        End If

    End Sub

    Sub MOV_FOCUS(ByVal PiobjCON As Control, ByVal PilngMOVE As Long)

        'フォーカスの設定が可能ならばフォーカス設定する
        Dim lngFocus As Long

        lngFocus = MjlngFocus + PilngMOVE
        Try
            MjobjCON(MjlngCON(lngFocus)).Focus()
            MjlngFocus = lngFocus
        Catch ex As Exception

        End Try


    End Sub


    'フォーカス順を設定する
    Sub MAK_CONS()

        Dim Con As Control
        Dim i As Long
        Dim m As Long
        Dim lngOld As Long

        'フォームに配置されているコントロールの一覧
        For Each Con In Controls
            If TypeName(Con) = "TextBox" Then
                MjlngFocusMAX = MjlngFocusMAX + 1
                ReDim Preserve MjlngCON(MjlngFocusMAX)
                ReDim Preserve MjobjCON(MjlngFocusMAX)
                MjlngCON(MjlngFocusMAX) = MjlngFocusMAX
                MjobjCON(MjlngFocusMAX) = Con
            End If
        Next

        '配列を上から下方向へソートしなおします
        If MjlngFocusMAX > 1 Then

            For i = 1 To MjlngFocusMAX
                For m = 2 To MjlngFocusMAX
                    If i = m Then
                    Else

                        If MjobjCON(m).Top < MjobjCON(i).Top Then
                            lngOld = MjlngCON(i)
                            MjlngCON(i) = MjlngCON(m)
                            MjlngCON(m) = lngOld

                        End If
                    End If

                Next
            Next
        End If



    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        Call MAK_CONS()
        MjlngFocus = 1
        MOV_FOCUS(MjobjCON(MjlngFocus), 0)
    End Sub


3.ビルドして実行します。


4.フォームに表示された テキストボックスで一番上に
    フォーカスがあることを確認して、リターンキーを押します。

5.そのすぐ下のテキストボックスへフォーカスが
    移ったことを確認できます。



-----------VB.NETコーディングここまで-------------------

本サンプルでは、フォームロード時に
テキストボックスのTopプロパティをもとに、
フォーカスの移動順を決定しています。

また、フォーカス移動の対象をテキストボックスとしています。
移動直後に、テキストの全選択を行います。

このサンプルをカスタマイズして、
左上から右下方向へ流れるようなフォーカス移動すると
使いやすくなっていきますね。

本サンプルでは、
MjlngCON() へは、フォーカス順を設定しています。
1 から始まって、最後までです。

また、タブシーケンス順を設定するのも方法ですね。

実際にフォーカスを設定するメソッドは、

  .Focus()

です。



 

http://anetm.com/dev/d.cgi?SC=DTDTL&o=OVl

Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。

「これがほしかった!厳選サンプルツール集」の注意点
●当サイトはリンクフリーです。
2018/12/15(土)00:05 更新