2016-04-22 3 views
0

У меня есть большое количество текстовых полей в приложении, содержащихся в панели. Текстовые поля сгруппированы по 4. Пример: l1, w1, q1, p1, l2, w2, q2, p2, .... Код внутри работает отлично, но занимает много времени при компиляции.код сокращения для большого количества текстовых полей

If l24.Text <> "" And w24.Text <> "" And q24.Text <> "" And p24.Text <> "" Then 
     counter += 1 
     Dim a, b, c, d As Integer 
     a = Convert.ToInt16(p24.Text.Substring(0, 1)) 
     b = Convert.ToInt16(p24.Text.Substring(1, 1)) 
     c = Convert.ToInt16(p24.Text.Substring(2, 1)) 
     d = Convert.ToInt16(p24.Text.Substring(3, 1)) 

     If a = 4 Or a = 5 Or b = 4 Or b = 5 Or c = 4 Or c = 5 Or d = 4 Or d = 5 Then 
      forpress += (Convert.ToInt16(l24.Text) + pressing) * (Convert.ToInt16(w24.Text) + pressing) * (Convert.ToInt16(q24.Text)) 
     End If 
     Select Case a 
      Case 1 
       half += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       ehalf += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 2 
       two += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       etwo += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 3 
       three += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       ethree += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 4 
       four += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       efour += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 5 
       five += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       efive += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
     End Select 

     Select Case b 
      Case 1 
       half += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       ehalf += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 2 
       two += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       etwo += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 3 
       three += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       ethree += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 4 
       four += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       efour += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
      Case 5 
       five += (Convert.ToInt16(l24.Text) + add) * Convert.ToInt16(q24.Text) 
       efive += Convert.ToInt16(l24.Text) * Convert.ToInt16(q24.Text) 
     End Select 

     Select Case c 
      Case 1 
       half += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       ehalf += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 2 
       two += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       etwo += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 3 
       three += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       ethree += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 4 
       four += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       efour += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 5 
       five += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       efive += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
     End Select 

     Select Case d 
      Case 1 
       half += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       ehalf += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 2 
       two += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       etwo += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 3 
       three += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       ethree += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 4 
       four += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       efour += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
      Case 5 
       five += (Convert.ToInt16(w24.Text) + add) * Convert.ToInt16(q24.Text) 
       efive += Convert.ToInt16(w24.Text) * Convert.ToInt16(q24.Text) 
     End Select 

    End If 

Это пример для одного набора текстовых (L24, W24, Q24, p24). Как я могу присоединиться ко всем наборам текстовых полей, чтобы свести к минимуму мои строки кода и время компиляции? Любая помощь действительно оценена

+0

Где находится «Дело»? И почему у вас есть это огромное количество переменных? Вы слышали о 'List (Of T)' s? – Clijsters

+0

Нет, еще нет. Но все равно. я буду искать его – Jad

+0

Возможно ли использовать многомерные массивы? Они хорошо работают для таких ситуаций, как ваши. (В частности, для вас это 2D-массивы). https://msdn.microsoft.com/en-us/library/d2de1t93(v=vs.90).aspx – user7777777

ответ

1

Вы можете использовать двумерные массивы. Например, у вас есть 10 групп по 4 TextBox каждый.

Вы могли бы использовать:

Dim Values(9, 3) As String 

, потому что у вас есть 10 групп (0 ~ 9) из 4-х элементов (0 ~ 3) каждый.

Например, если вы хотите, чтобы прочитать значение из первого TextBox в шестой группе:

Вы могли бы использовать:

Values(5, 0) = l6.Text 

Таким образом, первое значение в данном случае относится к числу групп а второй - номер в этой группе. Он также работает наоборот, если вы предпочитаете. Это, безусловно, уменьшит размер вашего кода.

Надеюсь, это помогло.

+1

Это было просто отлично! – Jad

+1

Добро пожаловать – user7777777

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