我的表单中有大约200个文本框。 按“Enter”将转到下一个文本框。 按“向上”将您带到上方文本框等... 我知道编码,但它是200个文本框,所以它将是大量的复制/粘贴。对于所有200个文本框,我有什么简短的方法吗?
答案 0 :(得分:2)
您真的想在单个表单上向用户显示200个文本框吗?您至少应该在逻辑上将它们放在容器控件中,例如在Panel
中。然后你可以使用OfType
。
您可以将它添加到使用匿名事件处理程序的表单类的构造函数中:
Dim allTextBoxes = from txt in Me.TextBoxPanel.Controls.OfType(Of TextBox)()
Order by txt.TabIndex
Dim txtList = allTextBoxes.ToList()
For i As Int32 = 0 To txtList.Count - 1
Dim thisTxt = txtList(i)
Dim nextIndex = If(i + 1 >= txtList.Count, 0, i + 1)
Dim prevIndex = If(i - 1 < 0, txtList.Count - 1, i - 1)
Dim nextTxt = txtList(nextIndex)
Dim prevTxt = txtList(prevIndex)
AddHandler thisTxt.KeyDown,
Sub(txt As Object, e As KeyEventArgs)
If e.KeyCode = 38 Then 'up
Me.ActiveControl = prevTxt
ElseIf e.KeyCode = 13 Then 'enter
Me.ActiveControl = nextTxt
End If
End Sub
Next