2016-04-19 18 views
0

我的表单中有大约200个文本框。 按下“Enter”会转到下一个文本框。 按“向上”会带你到上面的文本框等... 我知道编码,但它是200个文本框,所以它会是一个巨大的复制/粘贴量。有没有什么简单的方法,我可以为所有的200文本框?巨大数量的文本框重复代码

+1

你真的想显示用户在单一表单上200个文本框?可怜的用户 –

+0

是的。它是以表格的形式。也许我可以工作,否则我是初学者。任何帮助,将不胜感激。 – Jad

+0

您可以在运行时创建控件,例如[如何以编程方式将控件添加到VB.NET中的窗体](http://stackoverflow.com/a/11312296/1115360)。但是,像DataGridView这样的东西可能对你更好。 –

回答

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 
+0

非常感谢你@Tim !!!那很完美 – Jad