按Enter键后在TextBox中显示文本

时间:2018-07-26 09:18:19

标签: vb.net event-handling

我想知道在使用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

我知道这看起来很简单,但是我想不出任何解决方法。感谢您的时间。

1 个答案:

答案 0 :(得分:1)

首先,您显然需要删除For i = 0 To 2循环,因为它会同时迭代所有文本框。

有两种方法可以做到这一点:

方法1:从名称中提取数字

由于所有文本框的名称都以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

方法2:从数组中文本框的索引中获取数字

尽管推荐使用方法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

这当然意味着您必须在添加更多文本框时更新数组。