缩短大量文本框的代码

时间:2016-04-22 07:30:09

标签: vb.net

我的应用程序中包含大量文本框,包含在面板中。文本框按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)的示例。如何加入所有文本框以最小化代码行和编译时间? 任何帮助都非常感谢

1 个答案:

答案 0 :(得分:1)

您可以使用二维数组。例如,您有10组,每组4 Dim Values(9, 3) As String

你会使用:

TextBox

因为你有10组(0~9)每组4个元素(0~3)。

例如,如果您想要读取第六组中第一个Values(5, 0) = l6.Text 的值:

你会使用:

sortBy()

因此,在这种情况下,第一个值是指组号,第二个值是指该组中的数字。如果您愿意,它也会以相反的方式工作。这肯定会减少代码的大小。

希望这会有所帮助。