2016-06-17 14 views
1

Hier Cursor zum nächsten Textfeld springen, habe ich dynamisch Textfelder auf der Schaltfläche erstellt basierend klickenWie auf Enter-Taste drückt

Also, wenn ich meinen Cursor in dem ersten Textbox und wenn ich es Taste drücken Enter-Taste zum nächsten Textfeld springen sollte . Wie kann ich tun, dass

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim count As Integer 
     Dim textbox As New TextBox() 
     count = Panel1.Controls.OfType(Of TextBox)().ToList().Count 
     textbox.Location = New System.Drawing.Point(60, 25 * count) 
     textbox.Size = New System.Drawing.Size(80, 20) 
     textbox.Name = "textbox_" & (count + 1) 
     Panel1.Controls.Add(textbox) 
    End Sub 

enter image description here

Antwort

1

Sie KeyDown Event für Ihre TextBox Kontrollen umgehen kann und überprüfen, ob das ist eingeben, wählen Sie nächste Kontrolle:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    For i As Integer = 1 To 10 
     Dim txt = New TextBox() 
     txt.Name = String.Format("textbox_{0}", i) 
     AddHandler txt.KeyDown, AddressOf txt_KeyDown 
     Me.FlowLayoutPanel1.Controls.Add(txt) 
    Next 
End Sub 

Private Sub txt_KeyDown(sender As Object, e As KeyEventArgs) 
    If (e.KeyData = Keys.Enter) Then 
     e.Handled = True 
     SendKeys.Send("{Tab}") 
    End If 
End Sub 

Hinweis:

  • Es ist besser, TableLayoutPanel oder FlowLayoutPanel zu verwenden, um dynamische Steuerelemente hinzuzufügen.

  • Add-Handler kann auch auf diese Weise erfolgen:

    AddHandler txt.KeyDown, Sub(s, ea) 
              If (ea.KeyData = Keys.Enter) Then 
               ea.Handled = True 
               SendKeys.Send("{Tab}") 
              End If 
             End Sub 
    
Verwandte Themen