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

これは、1組のテキストボックス(l24、w24、q24、p24)の例です。コードラインを最小化してコンパイル時間を短縮するために、どのようにテキストボックスのすべてのセットに参加できますか? 本当に助けてください。

+0

「ケース」はどこにありますか?なぜこの膨大な量の変数がありますか? 'List(Of T)'について聞いたことがありますか? – Clijsters

+0

いいえ、まだありません。しかし、とにかくthx。私はそれを見てください – Jad

+0

多次元配列を使用することは可能ですか?彼らはあなたのような状況でうまくいく。 (具体的には、2D配列です)。 https://msdn.microsoft.com/en-us/library/d2de1t93(v=vs.90).aspx – user7777777

答えて

1

2次元配列を使用できます。たとえば、それぞれ4つのの10個のグループがあります。

あなたが使用します。

Dim Values(9, 3) As String 

あなたは4つの要素(0〜3)それぞれの10グループ(0〜9)を持っているので。例えば

、あなたは第六グループ内の最初のTextBoxから値を読みたい場合は:あなたが使用することになり

Values(5, 0) = l6.Text 

だから、この場合の最初の値は、グループ番号を指し、 2番目の数字はそのグループの数字を示します。もしあなたが好きなら、それは逆も同様です。これは確かにあなたのコードのサイズを減らすでしょう。

これが役に立った。

+1

これは完璧だった! – Jad

+1

あなたは大歓迎です – user7777777

関連する問題