【】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 記事・情報の無断転載を禁止します。
|
|
|
|
|
|
|