Циклический просмотр текстовых полей в групповом окне дает странные результаты - PullRequest
0 голосов
/ 08 июля 2011

У меня есть следующий код:

    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 текстовых полей) по какой-то причине и идет оттуда.Кто-нибудь знает, в чем проблема с моим кодом?

Аарон

Ответы [ 2 ]

2 голосов
/ 10 июля 2011

Ну, имя вашего текстового поля не имеет отношения к его индексу в коллекции .Controls его родителя.

Одна вещь, которую вы можете сделать, это установить свойство .tag каждого из ваших элементов управления на индекс, который вы хотите передать в функцию оценки.

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

Таким образом, вам не нужно беспокоиться о порядке текстовых полей во время итерации.

0 голосов
/ 09 марта 2012
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...