Fiínek Cahů Ответов: 2

Сравнение значений из нескольких текстовых полей


Привет,

Как я могу сравнить значение из всех видимых текстовых полей в panel6 со значением в textbox1?

спасибо

Что я уже пробовал:

Я попробовал этот отредактированный код, но в этой части ничего не произошло.
If ctl.Text = TextBox1.Text Then
                        ctl.BackColor = Color.LimeGreen




Dim EmptyTextBoxFound As Boolean = False 'Boolean flag for empty textbox
     Dim EmptyTextBoxName As String = ""
     For Each ctl As Control In Panel6.Controls
         If TypeOf ctl Is TextBox AndAlso ctl.Visible AndAlso ctl.Text.Length > 6 Then
             EmptyTextBoxName = ctl.Name
             EmptyTextBoxFound = True
             Exit For

             If EmptyTextBoxFound = True Then
                 If ctl.Text = TextBox1.Text Then
                     ctl.BackColor = Color.LimeGreen
                 Else
                     ctl.Select()
                     ctl.BackColor = Color.LightSalmon
                 End If

             End If
             End If

     Next

2 Ответов

Рейтинг:
9

CHill60

Я уже объяснил вам, в чем проблема по вашему другому вопросу -
Управление пустыми текстовыми полями[^]

Я даже включил ссылку на статью, которая покажет вам, как использовать отладчик Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Даже если вы просто читаете код, очевидно, что код, на который вы ссылаетесь, никогда не может быть выполнен из-за Exit For

Dim EmptyTextBoxFound As Boolean = False 'Boolean flag for empty textbox
     Dim EmptyTextBoxName As String = ""
     For Each ctl As Control In Panel6.Controls
         If TypeOf ctl Is TextBox AndAlso ctl.Visible AndAlso ctl.Text.Length > 6 Then
             EmptyTextBoxName = ctl.Name
             EmptyTextBoxFound = True
             Exit For  '<<<<<<<<<<<<<<<<<<<< THIS LINE HERE JUMPS EXECUTION TO . . .             
             
             If EmptyTextBoxFound = True Then                                   V
                 If ctl.Text = TextBox1.Text Then                               |
                     ctl.BackColor = Color.LimeGreen                            |
                 Else                                                           |
                     ctl.Select()                                               |
                     ctl.BackColor = Color.LightSalmon                          |
                 End If                                                         |
                                                                                |
             End If                                                             |
             End If                                                             V

     Next                      
'<<<<<<<<<<<<<<<<<<< THIS LINE HERE 


[no name]

Спасибо Chill60 я сделал это, но теперь я пытаюсь решить следующую проблему, я хочу проверить, все ли текстовые поля изменились ---> backcolor. шоколад. Если да, то сделайте что-нибудь. Как я могу это проверить?

спасибо

CHill60

Точно так же, как я показал вам на другом вашем вопросе

[no name]

это правильный путь или нет?

Dim EmptyTextBoxFound As Boolean = False 'логический флаг для пустого текстового поля
Dim Emptyextboxname As Color = System.Рисование.Цвет.LightSalmon
Для каждого ctl в качестве элемента управления в Panel6.Управления
Если для вызова typeof CTL является текстовое поле атакже ПНО.Видно, атакже ПНО.Текст.Длина &ГТ; 6 тогда
EmptyTextBoxName = ПНО.Цвет фона
EmptyTextBoxFound = True
Выход для '<<<<<<<<<<<<<<<<< & lt; & lt; эта строка здесь переходит выполнение к ...

Если EmptyTextBoxFound = True, То
Еще
tisk_pruvodky(отправитель, e)
Конец, Если
Конец, Если
Следующий

CHill60

Ничто после выхода для не будет выполнено. Ваш выход для такой же, как GoTo - шаг через код в отладчике, и вы увидите, куда он идет.
Посмотрите на мое решение в вашем другом посте - я переместил то, что хотел сделать, за пределы цикла, который нашел текстовое поле
В качестве альтернативы удалите выход для

Рейтинг:
0

OriginalGriff

Мы не можем сказать - у нас нет никакого доступа к вашему приложению, пока оно работает.
Так что все будет зависеть от тебя.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик.
Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!

Но обратите внимание на две вещи:
1) Если TextBox1 находится в вашей форме, он будет находиться в коллекции элементов управления, поэтому вам гарантировано совпадение при условии, что текст длиннее 6 символов.
2) Ваш цикл не будет подбирать текстовые поля, которые находятся в панелях, вкладках или любом другом контейнере - только элементы управления, которые находятся непосредственно на форме, появятся в его коллекции элементов управления.