C#-DateTime /整数形式验证(必填字段不应为null /空)

时间:2019-05-18 14:44:53

标签: c# validation datetime integer

DateTime(出生日期)和int(电话号码)字段弹出错误。

当前正在做一个简单的图书馆应用程序,以在图书馆中注册新的客户记录-尝试执行验证,以便在单击“保存”按钮(创建新记录)时,检查字段以查看是否向其中提交了数据。

例如我将以下代码用于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;
        }

出生日期错误:

(未处理的异常) System.FormatException:'字符串未被识别为有效的DateTime。'

TelephoneNumber错误:

(未处理的异常) System.FormatException:'输入字符串的格式不正确。'

1 个答案:

答案 0 :(得分:0)

在处理用户输入和对此输入进行验证时,不应使用会在输入无效的情况下引发异常的方法。相反,TryParse方法的族允许您 try 转换输入,如果发生错误,它们不会引发异常,而是返回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;
}