2012-01-12 10 views
0

フォームは、それぞれ8桁の長さの一連のテキストボックスがあります。フォームを循環して最初の4桁(0123)を入力するボタンがあります。テキストボックスの間にタブを置くと、どのようにしてカーソルのフォーカスを行の最後、つまり4桁目の後にすることができますか?ありがとう:)VB6 - テキストボックス間のタブ移動。テキストボックス値の最後に常にカーソルフォーカスを取得する方法

+1

これで2つの良い答えができました。 1つは、テキストが長くても常に4桁目の後ろにカーソルを置きます。 1、2、3、4、5などのテキストの長さに関係なく、カーソルは常に最後に置かれます。あなたが好むものだけを決めてください! – MarkJ

+2

どちらのソリューションも、マウスの起動時にカーソルを設定します。 OPはタブでのみ選択を変更したい。 – wqw

答えて

4

このコードをフォームのソースファイルに置きます。

Private Sub Text1_GotFocus() 
    Text1.SelStart = Len(Text1.Text) 
End Sub 

これは、Text1という名前のテキストボックスがあることを前提としています。フォーカスがあると、カーソルはテキストボックスの最後に配置されます。

3
Private Sub Text1_GotFocus() 
    Text1.SelStart = 4 
End Sub 
+0

それは4でなければなりませんか? 0は開始、1は1桁目の後などです。http://msdn.microsoft.com/en-us/library/aa445679(v=VS.60).aspx – MarkJ

+0

@MarkJはい、そうです。何らかの理由で、私はデフォルトの内容 'text1'が4文字長いと思った。 – GSerg

+0

+1。 4文字未満の場合、このコードはテキストの最後にカーソルを置きます。 – MarkJ

1

wqwのポイントが正しい場合は、これをタブで押すだけで、マウスでクリックしない場合は、既存の回答をforms_KeyUpイベントと組み合わせます。キーアップが9の場合はタブボタンで、 Selstartメソッドを呼び出すことができます。

+0

そう、タブのプレスは間違いなく1番です – proggrock

0

一連のテキストボックスがあると述べたので、Form_Loadのすべてのコントロールのテキストボックスの最後にカーソル位置を設定する単一の方法を使用できます。これは、各テキストボックスのイベントハンドラよりもはるかに少ないコードを必要とします。

Dim o As Variant 
For Each o In Form1.Controls 
    If TypeName(o) = "TextBox" Then 
     Dim x As TextBox 
     Set x = o 
     x.SelStart = Len(x.Text) 
    End If 
Next 

しかし、ユーザーは、彼らが出て、戻ってテキストボックスに来るとき、それは変更されたままになりますテキストボックスのいずれかのカーソル位置を変更したとき。シナリオに応じて、これは望ましい動作である場合とそうでない場合があります。たとえば、テキストボックスが最初にフォーカスを取得すると、カーソルは最後にあります。ユーザがカーソルの位置を変更し、同じテキストボックスに戻って来ることを決定した場合、カーソルはそれらを離したところにある。

関連する問題