Member 14903990 Ответов: 1

Как проверить несколько текстовых полей в VB


Мне дали задание, в котором говорится, что я должен

Напишите проверку ввода таким образом, чтобы количество единиц для каждого пакета, введенного пользователем, было только числовым и не было отрицательным

Напишите код, чтобы очистить пробелы до и после текста. (Подсказка: применение обрезки)

Во время выполнения мы не можем позволить себе допустить сбой программного обеспечения. Вы должны написать соответствующие сообщения об ошибках для следующих случаев:
а.когда пользователь вводит нечисловое значение в любой из пакетов.
Б.когда пользователь вводит отрицательное значение в любой из пакетов.
c.когда приложение страдает критической ошибкой во время выполнения.


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

Try
    packageA = CInt(CDec(txtPackageA.Text))
    packageB = CInt(CDec(txtPackageB.Text))
    packageC = CInt(CDec(txtPackageC.Text))
Catch ex As Exception
    MessageBox.Show("Numbers only and not Negative", "Input Error")
    Return
End Try
If (packageA < 1) Then
    MessageBox.Show("Numbers only and not Negative", " Input Error")
    Return
End If
If (packageB < 1) Then
    MessageBox.Show("Numbers only and not Negative", " Input Error")
    Return
End If
If (packageC < 1) Then
    MessageBox.Show(" Numbers only and not Negative", " Input Error")
    Return
End If




lblAmountA.Text = "GHc" & packA.Метод toString
lblAmountB.Text += "GHc" & packB.Метод toString
lblAmountC.Text += "GHc" & packC.Метод toString

GrandTotal = CInt(packA + packB + packC)
lblTotal.Text += "GHc" &grandtotal.Метод toString

Поймать ex как исключение
Конец Попытки


Конец Подводной Лодки


Private Sub txtPackageA_TextChanged(sender As Object, e As EventArgs) обрабатывает txtPackageA.Очередь textchanged
If (Not IsNumeric(txtPackageA.Text)) Затем

ErrorProvider1.SetError(txtPackageA, "только числовой")

Еще
ErrorProvider1.SetError(txtPackageA, "")
Конец, Если
Конец Подводной Лодки

Private Sub txtPackageB_TextChanged(sender As Object, e As EventArgs) обрабатывает txtPackageB.Очередь textchanged
If (Not IsNumeric(txtPackageB.Text)) Затем

ErrorProvider1.SetError(txtPackageB, "только числовой")

Еще
ErrorProvider1.SetError(txtPackageB, "")
Конец, Если
Конец Подводной Лодки

Частная суб txtPackageC_TextChanged(отправителя как объект, а равно EventArgs) обрабатывает txtPackageC.Очередь textchanged
If (Not IsNumeric(txtPackageC.Text)) Затем

ErrorProvider1.SetError(txtPackageC, "только числовой")

Еще
ErrorProvider1.SetError(txtPackageC, "")
Конец, Если
Конец Подводной Лодки

Private Sub txtPackageA_Validating(отправитель как объект, e как система.ComponentModel.CancelEventArgs) обрабатывает txtPackageA.Проверка

Если (Строка.IsNullOrEmpty(txtPackageA.Text)) Затем
е.Отмена = Истина

ErrorProvider1.SetError(txtPackageA, "пожалуйста, введите здесь единицу измерения!!!")

Еще
е.Отменить = Ложь
ErrorProvider1.SetError(txtPackageA, "")
Конец, Если
Конец Подводной Лодки

Private Sub txtPackageB_Validating(отправитель как объект, e как система.ComponentModel.CancelEventArgs) обрабатывает txtPackageB.Validating
Если (Строка.IsNullOrEmpty(txtPackageB.Text)) Затем
е.Отмена = Истина

ErrorProvider1.SetError(txtPackageB, "пожалуйста, введите здесь единицу измерения!!!")

Еще
е.Отменить = Ложь
ErrorProvider1.SetError(txtPackageB, "")
Конец, Если
Конец Подводной Лодки
End Класса

1 Ответов

Рейтинг:
1

OriginalGriff

Вместо этого избавьтесь от этой попытки ... Catch code - вы не должны полагаться на исключения для "нормальной обработки".
Вместо этого начните с чтения инструкций - и особенно подсказки - и рассмотрите возможность использования Типа int32.Метод TryParse (Система) | Microsoft Docs[^] который возвращает логическое значение "я преобразовал его" / "это недопустимое число", как только вы обрезали входную строку.