2011-07-07 21 views
0

私は次のコードを持っている:私は何をやっていることはgroupbox3内の各テキストボックスをループさは奇妙な結果を与える

For Each control2 As Control In GroupBox3.Controls 
     If TypeOf control2 Is TextBox Then 
      Dim txt2 As TextBox = TryCast(control2, TextBox) 
      If counter > totalBoxes Then 
       totalBoxes += 1 
       txt2.Text = grade(totalBoxes) 
      End If 
     End If 
    Next 

を。次に、カウンタ(フォームに入力されたグレードの総数)がtotalBoxes(0に設定されている)より大きいかどうかを確認し、最後に実際のグレード(A、B、C、D)をテキストボックスに入れます。問題は何らかの理由でテキストボックス8(私は10個のテキストボックスがあります)でループを開始してそこから行くことです。誰かが私のコードで何が問題なのか知っていますか?

アーロン

答えて

2

さて、あなたのテキストボックスの名前は、その親の.Controlsコレクション内のインデックスとは関係ありません。

各自のコントロールの.tagプロパティを、グレード機能に渡すインデックスに設定することができます。

textbox1.Tag = 1 
textbox2.Tag = 2 
... 

このように、反復中にテキストボックスがどの順序にある​​か心配する必要はありません。

+0

ありがとうございます。ありがとうございます。タグプロパティを使用すると、私の全問題を解決できます。 =) – Ratty

0
For Each box As TextBox In GroupBox3.Controls.OfType(Of TextBox).OrderBy(Function(t) t.Name) 
    If counter > totalBoxes Then 
     totalBoxes += 1 
     box.Text = grade(totalBoxes) 
    End If 
Next box