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

Смежные вопросы