2016-04-19 22 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