Проверка нескольких TextBox на пустоту

~Jack~

Как осуществить проверку нескольких полей на пустую строку?Я попробовал так
        For k As Integer = 1 To 6
            If Len(Me.Controls("TextBox" & k)) = 0 Then
                MessageBox.Show("Поля не могут быть пустыми.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Exit Sub
            End If
        Next
но выбивает ошибку.Может есть способ лучше?
4 ответа

~Jack~

~Jack~, Какое свойство ты проверяешь у контрола?
Len(Me.Controls("TextBox" & k))
В следующий раз, приводи текст ошибки


~Jack~

Какое свойство ты проверяешь у контрола?
Прошу прощение, проверяю так
Len(Me.Controls("TextBox" & k).Text)
что бы не ввел или поле оставил пустым, появляется моя ошибка
MessageBox.Show("Поля не могут быть пустыми.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
И я так понимаю если будут пробелы в поле, то это будет считаться символом?Понял свою ошибку, у меня TextBoxы находятся на GroupBoxеНадо так
       For k As Integer = 1 To 6
            If Len(Me.GroupBox1.Controls("TextBox" & k).Text) = 0 Then
                MessageBox.Show("Поля не могут быть пустыми.", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                Exit Sub
            End If
        Next


~Jack~

И я так понимаю если будут пробелы в поле, то это будет считаться символом?
Конечно, пробел - это не пустота. Тут надо прыгать в зависимости от того, что там должно быть. Например, если числа - то проверяем на числа, если текст - можно проверить длину текста, затримив пробелы
MsgBox(TextBox1.Text.Trim.Length)
Вернет только текст, а пробелы по обоим краям считать не будет, хоть их там будет сотня.Совет №1:
Len
Костыльный элемент, забудьте. У Текстбокса уже есть два свойства Text.Lenght и то же, но без точки. Да и это далеко не все.Совет №2: Не стоит на каждой итерации выдавать сообщение. Заведите булеву переменную, в цикле ее измените, если что не так. Можно при желании в конце перечислить незаполненные поля.Совет №3: Начните использовать вполне себе уже типизированные коллекции элементов управления,
Dim TB_Collection As New List(Of TextBox)
- глобально, и заполните один раз. А потом крутите как хотите всю жизнь программы, и с типизацией проблем не будет.


~Jack~

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim x(4, 4), b(4) As ******
        If Not IsValid******(TextBox3.Text, x(1, 1)) Then
            TextBox3.Select(1, TextBox3.Text.Length)
            TextBox3.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox2.Text, x(1, 2)) Then
            TextBox2.Select(0, TextBox2.Text.Length)
            TextBox2.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox7.Text, x(1, 3)) Then
            TextBox7.Select(0, TextBox7.Text.Length)
            TextBox7.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox11.Text, x(1, 4)) Then
            TextBox11.Select(0, TextBox11.Text.Length)
            TextBox11.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox20.Text, x(2, 1)) Then
            TextBox20.Select(1, TextBox20.Text.Length)
            TextBox20.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox4.Text, x(2, 2)) Then
            TextBox4.Select(0, TextBox4.Text.Length)
            TextBox4.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox8.Text, x(2, 3)) Then
            TextBox8.Select(0, TextBox8.Text.Length)
            TextBox8.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox12.Text, x(2, 4)) Then
            TextBox12.Select(0, TextBox12.Text.Length)
            TextBox12.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox19.Text, x(3, 1)) Then
            TextBox19.Select(1, TextBox19.Text.Length)
            TextBox19.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox5.Text, x(3, 2)) Then
            TextBox5.Select(0, TextBox5.Text.Length)
            TextBox5.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox9.Text, x(3, 3)) Then
            TextBox9.Select(0, TextBox9.Text.Length)
            TextBox9.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox13.Text, x(3, 4)) Then
            TextBox13.Select(0, TextBox13.Text.Length)
            TextBox13.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox1.Text, x(4, 1)) Then
            TextBox1.Select(1, TextBox1.Text.Length)
            TextBox1.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox6.Text, x(4, 2)) Then
            TextBox6.Select(0, TextBox6.Text.Length)
            TextBox6.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox10.Text, x(4, 3)) Then
            TextBox10.Select(0, TextBox10.Text.Length)
            TextBox10.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox15.Text, x(4, 4)) Then
            TextBox15.Select(0, TextBox15.Text.Length)
            TextBox15.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox14.Text, b(1)) Then
            TextBox14.Select(0, TextBox14.Text.Length)
            TextBox14.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox17.Text, b(2)) Then
            TextBox17.Select(0, TextBox17.Text.Length)
            TextBox17.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox16.Text, b(3)) Then
            TextBox16.Select(0, TextBox16.Text.Length)
            TextBox16.Focus()
            Exit Sub
        End If
        If Not IsValid******(TextBox18.Text, b(4)) Then
            TextBox18.Select(0, TextBox18.Text.Length)
            TextBox18.Focus()
            Exit Sub
        End If
        Answer.Clear()
        PolDel(b, x)
    End Sub
Private Function IsValid******(ByVal txt As String, ByRef result As ******) As Boolean
        If Not IsNumeric(txt) Then Return False
        result = ******.Parse(txt)
        Return True
    End Function
Подскажите пожалуйста возможно записать это, попроще?
 Sub PolDel(ByVal b, ByVal x)
        Dim x1 As ******
        Dim x2 As ******
        Dim x3 As ******
        Dim x4 As ******
        x(1, 2) = x(1, 2) / x(1, 1)
        x(1, 3) = x(1, 3) / x(1, 1)
        x(1, 4) = x(1, 4) / x(1, 1)
        b(1) = b(1) / x(1, 1)
 
        b(2) = b(2) / x(2, 2)
        x(2, 3) = x(2, 3) / x(2, 2)
        x(2, 4) = x(2, 4) / x(2, 2)
        x(2, 1) = x(2, 1) / x(2, 2)
 
        b(3) = b(3) / x(3, 3)
        x(3, 2) = x(3, 2) / x(3, 3)
        x(3, 4) = x(3, 4) / x(3, 3)
        x(3, 1) = x(3, 1) / x(3, 3)
 
        b(4) = b(4) / x(4, 4)
        x(4, 2) = x(4, 2) / x(4, 4)
        x(4, 3) = x(4, 3) / x(4, 4)
        x(4, 1) = x(4, 1) / x(4, 4)
        x4 = b(4) - (x(4, 1) * x1) - (x(4, 2) * x2) - (x(4, 3) * x3)
        x3 = b(3) - (x(3, 1) * x1) - (x(3, 2) * x2) - (x(3, 4) * x4)
        x2 = b(2) - (x(2, 1) * x1) - (x(2, 3) * x3) - (x(2, 4) * x4)
        x1 = b(1) - x(1, 2) * x2 - x(1, 3) * x3 - x(1, 4) * x4
        Answer.Text &= " x1=" & x1.ToString & " x2 =" & x2.ToString & " x3=" & x3.ToString & " x4=" & x4.ToString
    End Sub