【问题标题】:Huge amount of textboxes repeated code大量文本框重复代码
【发布时间】:2016-04-19 08:24:03
【问题描述】:

我的表单中有大约 200 个文本框。 按“Enter”将带您进入下一个文本框。 按“向上”会将您带到上方的文本框等... 我知道编码,但它有 200 个文本框,所以这将是大量的复制/粘贴。有没有什么捷径可以为所有 200 个文本框做到这一点?

【问题讨论】:

  • 您真的想在一个表单上向用户显示 200 个文本框吗?可怜的用户
  • 是的。它是表格的形式。也许我可以以其他方式工作,但我是初学者。任何帮助将不胜感激。
  • 您可以在运行时创建控件,例如How to programmatically add controls to a form in VB.NET。但是,像 DataGridView 这样的东西可能更适合您。

标签: vb.net


【解决方案1】:

您真的想在一个表单上向用户显示 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2010-10-14
    • 2020-02-21
    • 1970-01-01
    相关资源
    最近更新 更多