Reputation: 91
I have a big number of textboxes in my application contained in a panel. The textboxes are grouped by 4. Example: l1,w1,q1,p1,l2,w2,q2,p2,.... The code inside is working perfectly but taking so much time while compiling.
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
This is an example for one set of textboxes (l24,w24,q24,p24). How can i join all the sets of textboxes to minimize my code lines and compiling time ? Any help is really appreciated
Upvotes: 0
Views: 51
Reputation: 393
You can use two-dimensional arrays. For example, you have 10 groups of 4 TextBox
each.
You would use:
Dim Values(9, 3) As String
because you have 10 groups (0 ~ 9) of 4 elements (0 ~ 3) each.
For example, if you want to read the value from the first TextBox
in the sixth group:
You would use:
Values(5, 0) = l6.Text
So the first value in this case refers to the group number and the second refers to the number in that group. It also works the other way around if you prefer. This certainly will reduce the size of your code.
Hope this helped.
Upvotes: 1