大量的文本框重复代码

时间:2016-04-19 08:24:04

标签: vb.net

我的表单中有大约200个文本框。 按“Enter”将转到下一个文本框。 按“向上”将您带到上方文本框等... 我知道编码,但它是200个文本框,所以它将是大量的复制/粘贴。对于所有200个文本框,我有什么简短的方法吗?

1 个答案:

答案 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