我想知道在使用VB.net按Enter键后如何在文本框中显示一些文本。我下面有一些代码,但是我的代码无法正常工作。第一次按Enter键后,它将同时显示Box 1,Box 2和Box 3。请注意,我有3个文本框。
Private Sub OnKeyDownHandler(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown, TextBox2.KeyDown, TextBox3.KeyDown
Dim i As Short
If e.KeyCode = Keys.Enter Then
Dim CurrentControl As Control = CType(sender, Control)
Me.SelectNextControl(CurrentControl, True, True, True, True)
For i = 0 To 2
txtBox(i).Text = "Box " + (i + 1).ToString
Next
End If
End Sub
我知道这看起来很简单,但是我想不出任何解决方法。感谢您的时间。
答案 0 :(得分:1)
首先,您显然需要删除For i = 0 To 2
循环,因为它会同时迭代所有文本框。
有两种方法可以做到这一点:
由于所有文本框的名称都以TextBox
开头,然后是其编号,因此您可以通过删除TextBox
部分来提取编号:
If e.KeyCode = Keys.Enter Then
Dim CurrentControl As Control = CType(sender, Control)
Me.SelectNextControl(CurrentControl, True, True, True, True)
If CurrentControl.Name.StartsWith("TextBox") Then
CurrentControl.Text = "Box " & CurrentControl.Name.Remove("TextBox".Length)
End If
End If
尽管推荐使用方法1 ,但是您也可以使用txtBox
数组来获取文本框的索引:
If e.KeyCode = Keys.Enter Then
Dim CurrentControl As Control = CType(sender, Control)
Me.SelectNextControl(CurrentControl, True, True, True, True)
Dim Index As Integer = Array.IndexOf(txtBox, CurrentControl)
If Index > -1 Then
CurrentControl.Text = "Box " & (Index + 1)
End If
End If
这当然意味着您必须在添加更多文本框时更新数组。