我有一个带有一系列文本框的表单,每个文本框的长度可以是8位数。我有一个循环通过表单的按钮,并填入前四位数字(0123)。当我在文本框之间切换时,如何始终将光标焦点放在行的末尾,即在第四个数字之后?谢谢:))
答案 0 :(得分:4)
将此代码放在表单的源文件中。
Private Sub Text1_GotFocus()
Text1.SelStart = Len(Text1.Text)
End Sub
这假定您有一个名为Text1的文本框。当它具有焦点时,光标位于文本框的末尾。
答案 1 :(得分:3)
Private Sub Text1_GotFocus()
Text1.SelStart = 4
End Sub
答案 2 :(得分:1)
如果wqw的点是正确的,并且你只需要按Tab键而不是用鼠标点击那么你将现有的答案与forms_KeyUp事件结合起来,如果key up为9那么这就是tab键和你然后可以调用Selstart方法。
答案 3 :(得分: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
但是,当用户更改任何文本框中的光标位置时,它们会在离开并返回文本框时保持更改状态。根据您的情况,这可能是也可能不是您想要的行为。例如,第一次任何文本框获得焦点时,光标位于末尾。如果用户决定更改光标位置并离开并返回到同一文本框,则光标位于它们离开的位置。