检查空的文本框并显示消息框

时间:2019-10-18 18:01:35

标签: c# validation

在我的家庭作业中,我要求用户输入:姓名和出生日期(月,日,年为自己的文本框)。然后计算他们的年龄。如果输入不正确(例如,空字段)和月份的不正确日期(例如,month字段不应为0或大于12),我还必须显示错误。我有一个基本测试:如果(dayTextBox.Text> 31 || dayTextBox.Text <0),则它将输出更改为Invalid day。未输入任何内容并单击“执行”按钮时,错误消息为:输入字符串的格式不正确。我尝试使用Parse来查找将进入DateTime的变量,但该变量不起作用。同样,如果输入的月份为0,我会得到:Year,Month和Day参数描述了无法表示的日期时间。

我一直在使用标签显示错误。这可行。但是,当我检查空字段或空字段时,程序崩溃。如果不检查空白字段,程序将正常运行而不会崩溃。我试着将if检查置于其他检查之上(它们全部放在if,if else系列语句中)以及放置将将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 :(得分:0)

在分配年,月,日变量之前/之前,我没有检查文本框是否为空,这就是输入无效的原因。除了检查包含正确数字范围的年,月,日之外,在分配变量之后但在计算之前也没有执行检查。这主要是问题的顺序和if语句的正确封装。