0
我的表单中有大约200个文本框。 按下“Enter”会转到下一个文本框。 按“向上”会带你到上面的文本框等... 我知道编码,但它是200个文本框,所以它会是一个巨大的复制/粘贴量。有没有什么简单的方法,我可以为所有的200文本框?巨大数量的文本框重复代码
我的表单中有大约200个文本框。 按下“Enter”会转到下一个文本框。 按“向上”会带你到上面的文本框等... 我知道编码,但它是200个文本框,所以它会是一个巨大的复制/粘贴量。有没有什么简单的方法,我可以为所有的200文本框?巨大数量的文本框重复代码
你真的想在一个表单上显示用户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
非常感谢你@Tim !!!那很完美 – Jad
你真的想显示用户在单一表单上200个文本框?可怜的用户 –
是的。它是以表格的形式。也许我可以工作,否则我是初学者。任何帮助,将不胜感激。 – Jad
您可以在运行时创建控件,例如[如何以编程方式将控件添加到VB.NET中的窗体](http://stackoverflow.com/a/11312296/1115360)。但是,像DataGridView这样的东西可能对你更好。 –