| 【】Top
 
 【】VB.NET
 【】VB6.0
 
 【】メールマガジンの購読
 【】メールマガジンの解除
 
 
 
 
 
 
 【】会社概要
 
 【】お問い合わせ
 
 
 姉妹サイト「バーチャルコネクション!」はこちらです。
 
 姉妹サイト「七福神のメールでビンゴ!」はこちらです。
 
 
   
 ●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。
 
 
 | 
 
               
                |  |  |  |   
                |  | 
   
 
   
    | 
  
        http://anetm.com/dev/d.cgi?SC=DTDTL&o=OVl 
        
  
                 
               
                 
                  | フォーカスの移動 |   
                  | 
 |   
                  | 【注意書き】 ●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()
 
 です。
 
 
 |  
  
             
   
 Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。  |  |  |   
                |  |  |  |  |