Vb.net 按Enter键后在文本框中显示文本

Vb.net 按Enter键后在文本框中显示文本,vb.net,event-handling,Vb.net,Event Handling,我想知道如何使用VB.net在按下enter键后在文本框中显示一些文本。我下面有一些代码,但我的代码不起作用。在我第一次按Enter键后,它会同时显示框1、框2和框3。注意,我有3个文本框 Private Sub OnKeyDownHandler(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown, TextBox2.KeyDown, TextBox3.KeyDown Dim i As Short

我想知道如何使用VB.net在按下enter键后在文本框中显示一些文本。我下面有一些代码,但我的代码不起作用。在我第一次按Enter键后,它会同时显示框1、框2和框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

我知道这看起来很简单,但我想不出任何办法来解决它。谢谢你抽出时间

首先,您显然需要删除i=0到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

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

@izwanismail:很高兴我能提供帮助!祝你的项目好运!