0

私は次のコードを持っています:

    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

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

アーロン

4

2 に答える 2

2

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

実行できることの1つは、各コントロールの.tagプロパティを、成績関数に渡したいインデックスに設定することです。

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

そうすれば、反復中にテキストボックスがどの順序になっているのかを心配する必要がありません。

于 2011-07-10T02:31:56.107 に答える
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
于 2012-03-09T14:35:51.920 に答える