C # - DateTime / проверка целочисленной формы (где обязательное поле не должно быть пустым / пустым) - PullRequest
1 голос
/ 18 мая 2019

У меня появляется сообщение об ошибке для полей DateTime (DateofBirth) и int (TelephoneNumber).

В настоящее время выполняется простое библиотечное приложение для регистрации новых записей о клиентах в библиотеке - при попытке сохранить проверку при сохранениинажата кнопка (создается новая запись), поля проверяются, чтобы увидеть, были ли в них отправлены данные.

Например,Я использовал приведенный ниже код для поля NAME, которое работало правильно.

Ниже приведены поля DateofBirth и TelephoneNumber, в которых я реализовал код, аналогичный Name, однако они не работают (я получаю ошибки).Я все еще новичок в C #, помощь будет принята с благодарностью.

Большое спасибо.

Пример, который работает.

Name = this.txtName.Text;

        if (string.IsNullOrWhiteSpace(Name))
        {
            MessageBox.Show("Customer's name is required. Please do not leave this field empty.");

            using (var erp_provider = new ErrorProvider())

                erp_Provider.SetError(this.txtName, "Customer's name is required. Kindly submit the details in the given field.");

            return;
        }

///// Проблемы сследующий код:

DateofBirth = DateTime.Parse(msktxtDateofBirth.Text);

        if (DateofBirth == DateTime.MinValue)
        {
            MessageBox.Show("Customer's Date of Birth is required. Please do not leave this field empty.");

            using (var erp_provider = new ErrorProvider())

                erp_Provider.SetError(this.msktxtDateofBirth, "Customer's Date of Birth is required. Kindly submit the details in the given field.");

            return;
        }

TelephoneNumber = Convert.ToInt32(txtTelephoneNumber.Text);

        if (TelephoneNumber == null)
        {
            MessageBox.Show("Customer's Telephone Number is required. Please do not leave this field empty.");

            using (var erp_provider = new ErrorProvider())

                erp_Provider.SetError(this.txtTelephoneNumber, "Customer's Telephone Number is required. Kindly submit the details in the given field.");

            return;
        }

Ошибка DateofBirth:

(Исключение не обработано) System.FormatException: 'Строка не была распознана как действительный DateTime.'

Ошибка TelephoneNumber:

(Исключение не обработано) System.FormatException: 'Входная строка была в неправильном формате.'

1 Ответ

0 голосов
/ 18 мая 2019

При работе с пользовательским вводом и проверкой этого ввода не следует использовать методы, которые вызывают исключение в случае недопустимых вводов. Вместо этого семейство метода TryParse позволяет попробовать для преобразования входных данных, и в случае ошибки они не вызывают исключение, а возвращают true или false.

if(!DateTime.TryParse(msktxtDateofBirth.Text, out DateTime DateofBirth))
{
    MessageBox.Show("Customer's Date of Birth is required. Please do not leave this field empty.");
    using (var erp_provider = new ErrorProvider())
        erp_Provider.SetError(this.msktxtDateofBirth, "Customer's Date of Birth is required. Kindly submit the details in the given field.");
    return;
}

if (!Int32.TryParse(txtTelephoneNumber.Text, out int TelephoneNumber))
{
    MessageBox.Show("Customer's Telephone Number is required. Please do not leave this field empty.");
    using (var erp_provider = new ErrorProvider())
        erp_Provider.SetError(this.txtTelephoneNumber, "Customer's Telephone Number is required. Kindly submit the details in the given field.");
    return;
}
...