Во-первых, я бы рекомендовал использовать новые методы .NET, если это возможно, вместо того, чтобы прибегать к старым методам стиля VB6. Таким образом, вместо MsgBox
, я бы рекомендовал использовать MessageBox.Show
, и вместо IsNumeric
, я хотел бы использовать Integer.TryParse
и т.д.
Так, например, вы могли бы переработать код так:
Dim invalid As TextBox = Nothing
If Not Integer.TryParse(txtpadult.Text, 0) Then
invalid = txtpadult
ElseIf Not Integer.TryParse(txtpjunior.Text, 0) Then
invalid = txtpjunior
ElseIf Not Integer.TryParse(txtpconc.Text, 0) Then
invalid = txtpconc
End If
If invalid IsNot Nothing Then
MessageBox.Show("ERROR: INVALID NUMERIC !", "System Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
invalid.Text = "0" ' Set to default value
End If
Как вам может видеть, так как он проверяет каждое текстовое поле, если он находит недопустимый, он сохраняет ссылку на него в переменной invalid
. Затем он может проверить, удалось ли найти и установить его значение. Кроме того, вы можете создать список текстовых полей, которые должны быть проверены, а затем цикл через них, как это:
Dim textBoxes() As TextBox = {txtpadult, txtpadult, txtpconc}
Dim invalid As TextBox = Nothing
For Each i As TextBox In textBoxes
If Not Integer.TryParse(i.Text, 0) Then
invalid = i
Exit For
End If
Next
If invalid IsNot Nothing Then
MessageBox.Show("ERROR: INVALID NUMERIC !", "System Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
invalid.Text = "0" ' Set to default value
End If
Или, если вы хотите быть умным, вы можете сделать это в менее строк кода с метод расширения LINQ:
Dim textBoxes() As TextBox = {txtpadult, txtpadult, txtpconc}
Dim invalid As TextBox = textBoxes.FirstOrDefault(Function(x) Not Integer.TryParse(x.Text, 0))
If invalid IsNot Nothing Then
MessageBox.Show("ERROR: INVALID NUMERIC !", "System Message", MessageBoxButtons.OK, MessageBoxIcon.Error)
invalid.Text = "0" ' Set to default value
End If
Привет, Chozo ... Я читал ваш вопрос несколько раз, и я все еще не совсем уверен, что вам нужно ... вы могли бы прояснить? –
Если txtpadult или txtpjunior или txtpconc являются ложными, сделайте ложную инструкцию для свойств текста со значением свойства. –
Chozo, я позволил изменить ваш вопрос, чтобы сделать вашу задачу немного яснее. –