Проверка пустых текстовых полей и отображение сообщения - PullRequest
0 голосов
/ 18 октября 2019

Для домашней работы я должен попросить у пользователя: Имя и дату рождения (Месяц, день, год как собственные текстовые поля). Затем посчитайте их возраст. Я также должен отобразить ошибку, если введены неправильные данные, такие как пустые поля и неправильные дни месяца (например, поле месяца не должно быть 0 или больше 12). У меня есть базовый тест: если (dayTextBox.Text> 31 || dayTextBox.Text <0), то он изменит вывод на недопустимый день. Сообщение об ошибке, когда ничего не введено и нажата кнопка «Выполнить», выглядит следующим образом: входная строка была в неправильном формате. Я попробовал Parse для переменных, которые войдут в DateTime, и это не сработало. Также, если введенный месяц равен 0, я получаю: параметры Year, Month и Day описывают непредставляемую дату и время. </p>

Я использовал метку для отображения ошибок. Это работает. Однако, когда я проверяю пустые или нулевые поля, программа вылетает. Без проверки пустых полей программа работала без сбоев. Я попытался поставить это, если проверка выше других проверок (они все в, если, если еще ряд операторов), а также перед переменными, которые помещают каждое из полей, которые изменяют TextBox.Text (s) в формат DateTimeдля расчета возраста.

if (string.IsNullOrEmpty(NameOutputLabel.Text) || string.IsNullOrEmpty(MonthDOBTextBox.Text) || string.IsNullOrEmpty(DayDOBTextBox.Text) || string.IsNullOrEmpty(YearDOBTextbox.Text))
        {
            AgeOutputLabel.Text = "Cannot have empty fields";
        }  

для справки вот пример других моих проверок

if (month < 1 || month > 12)
        {
            AgeOutputLabel.Text = "Invalid month. Must be between 1 and 12";
        }

Вот как настроен мой DateTime:

 int year = Convert.ToInt32(YearDOBTextbox.Text);
        int month = Convert.ToInt32(MonthDOBTextBox.Text);
        int day = Convert.ToInt32(DayDOBTextBox.Text);
        // This sets the calculation for determining the age
        DateTime currentDate = DateTime.UtcNow;
        DateTime usersBirthDate = new DateTime(year, month, day);
        int age = currentDate.Year - usersBirthDate.Year;

Хотелось бы просто проверить наличие пустых и пустых полей, наряду с проверками правильности ввода дня, месяца, года. Все при отображении правильной ошибки (поля не могут быть пустыми || Месяц должен быть между 1 и 12 и т. Д.)

1 Ответ

0 голосов
/ 19 октября 2019

Я не делал проверку, чтобы видеть, были ли TextBoxes нулевыми вне / перед назначением переменных года, месяца, дня, и это было причиной неправильного ввода. А также проверки для года, месяца, дня, содержащие правильный диапазон чисел, который также выполнялся не после присвоения переменных, а до расчета. В основном это был вопрос порядка и правильной инкапсуляции операторов if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...