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

Как я могу вызвать следующую форму после успешной проверки всех текстовых полей?


Как я могу вызвать следующую форму после успешной проверки всех текстовых полей? У меня есть проблема с вызовом следующей формы после успешной проверки всех текстовых полей все текстовые поля, если они находятся в допуске. Вы не могли бы мне помочь?

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

Private Sub FINAL_KONTROLA(sender As Object, e As EventArgs)
    Dim EmptyTextBoxFound As Boolean = False 'Boolean flag for empty textbox 
    Dim EmptyTextBoxName As String = ""
    Dim max_x As Double = max_tolerance.Text
    Dim min_x As Double = min_tolerance.Text

    For Each ctl As Control In Panel1.Controls
        If TypeOf ctl Is TextBox AndAlso ctl.Visible Then
            Dim v1 As Double = ctl.Text
            If v1 >= max_x OrElse v1 <= min_x Then

                EmptyTextBoxName = ctl.Name
                EmptyTextBoxFound = True
                ctl.Select()
                ctl.Text = ""
                ctl.BackColor = Color.LightSalmon
                MsgBox("Vyznačený záznam neodpovída tolerančnímu poli",, "Chyba")
                Exit For
                If EmptyTextBoxFound = True Then
                    ctl.BackColor = Color.Red
                    '.. do whatever you have do
                End If
            End If
        End If
    Next
End Sub

2 Ответов

Рейтинг:
1

OriginalGriff

Замените свой Exit For с возвратом, когда вы находите "плохое значение".
После For ... Next петля, откройте новую форму:

Dim mnf As MyNewForm = New MyNewForm()
mnf.ShowDialog()
Или
Dim mnf As MyNewForm = New MyNewForm()
mnf.Show()
в зависимости от того, что вам нужно сделать.

Кстати: гораздо лучше проверить текстовые поля на наличие двойных значений с помощью TryParse:
Dim d As Double

If Not Double.TryParse(myTextBox.Text, d) Then
    MessageBox.Show("""{0}"" is not a valid number.", myTextBox.Text)
    Return
End If


[no name]

Текстовые поля двойные. Я заменяю exit for на return, но если все в порядке, то мой код заканчивается сначала if - If v1 > max_x OrElse v1 < min_x Then.

Рейтинг:
0

RickZeeland

Я думаю, что вы должны удалить Exit For.
Чтобы вызвать другую форму:

If EmptyTextBoxFound = False Then
    Dim form2 As New Form2()
    form2.Show()
End If


[no name]

Это проблема, потому что если все в порядке, то мой код заканчивается сначала if - If v1 > max_x OrElse v1 < min_x, а затем

RickZeeland

Не тогда, когда вы убираете выход для !