计算文本框为空时的年龄错误

时间:2014-07-09 14:10:24

标签: c#

我有2个texboxes textbox71,我输入出生日期,程序计算我的年龄并在textbox72中显示,问题是当我没有在textbox71中输入内容时程序给我一个错误“字符串没有被认为是有效的日期时间“并关闭,我想从程序中得到的是当我没有在dateofbirth文本框中输入内容向我显示输入内容的消息时,所以我试图这样做但是它在这里没有用到我的代码:

     if (!string.IsNullOrEmpty(textBox71.Text))
            {
                MessageBox.Show("please enter date of birth");
            }
            else
            {

                DateTime drid2 = Convert.ToDateTime(textBox71.Text);
                DateTime drid3 = DateTime.Now;
                int yy1 = Math.Abs(drid3.Year - drid2.Year);
                textBox72.Text = yy1.ToString();

           }

2 个答案:

答案 0 :(得分:1)

尝试修改

if (string.IsNullOrEmpty(textBox71.Text))
        {
            MessageBox.Show("please enter date of birth");
        }
        else
        {

            DateTime drid2 = Convert.ToDateTime(textBox71.Text);
            DateTime drid3 = DateTime.Now;
            int yy1 = Math.Abs(drid3.Year - drid2.Year);
            textBox72.Text = yy1.ToString();
         }

!string.IsNullOrEmpty如果值不为空则返回true,如果值为空则返回false。你试图反其道而行之。

答案 1 :(得分:1)

如果string.IsNullOrEmpty(textBox71.Text) <{1}} null 为空,则此true将为textBox71.Text 。因此,!string.IsNullOrEmpty(textBox71.Text)将为false ,如果 textBox71.Text null 为空,则! {1}}是否定运算符。

因此当textBox71.Text null 为空时,else语句中的代码将被执行,何时会到达这条线

DateTime drid2 = Convert.ToDateTime(textBox71.Text);

您将收到错误消息,因为textBox71.Text将是 null 为空

因此,删除否定运算符!,您的逻辑将是正确的,您的代码将按预期执行。

有关逻辑否定运算符的更多信息,请查看here

我建议您使用方法String.IsNullOrWhiteSpace,因为它更通用:

  

指示指定的字符串是空,空还是仅包含空格字符。

有关此方法的详细信息,请查看here