文本框不显示错误



如果成员没有输入,我将尝试验证出生文本框字段的两个数据这两个框将弹出一条错误消息,如"请输入有效日期格式"

通过使用以下代码

       if (tbStartDate.Text != "0" && tbEndDate.Text != "0")
       { 
        string dob = tbStartDate.Text;
        DateTime dv = DateTime.Parse(dob);
        string format1 = dv.ToString("yyyy-MM-dd");
        string dob2 = tbEndDate.Text;
        DateTime dt2 = DateTime.Parse(dob2);
        string format2 = dt2.ToString("yyyy-MM-dd");
     }
      else
     {
            MessageBox.Show("pls enter valid date ");
     }

当我尝试在不输入文本框值的情况下保存时,它显示了这样的错误"字符串未被识别为有效的DateTime"。

有人能帮上忙吗。。。。

这是修改后的代码,它仍然在日期时间DV显示错误;

         private void btnCTimetablessave_Click(object sender, EventArgs e)
    {
        string dob = tbStartDate.Text;
        DateTime dv;
        if (!DateTime.TryParse(dob, out dv))
        {
            MessageBox.Show("pls enter a valid  start date");
            return;
        }
        string format1 = dv.ToString("yyyy-MM-dd");
        string dob2 = tbEndDate.Text;
        DateTime dt2;
        if (!DateTime.TryParse(dob2, out dt2))
        {
            MessageBox.Show("pls enter valid end date");
            return;
        }
        string format2 = dt2.ToString("yyyy-MM-dd");

它仍然在DateTime Dv显示这样的错误"字符串未被识别为有效的DateTime";

这是第三次修改代码

       private void btnCTimetablessave_Click(object sender, EventArgs e)
      {
         string dob = tbStartDate.Text;
        DateTime dv;
        if (!DateTime.TryParse(dob, out dv))
        {
            MessageBox.Show("pls enter a valid  start date");
            return ;
        }
        string format1 = dv.ToString("yyyy-MM-dd");
        string dob2 = tbEndDate.Text;
        DateTime dt2;
        if (!DateTime.TryParse(dob2, out dt2))
        {
            MessageBox.Show("pls enter valid end date");
            return;
        }
        string format2 = dt2.ToString("yyyy-MM-dd");
     }

不要使用DateTime.Parse。请使用DateTime.TryParse。结果是一个布尔值,如果解析成功,则返回true。

更新根据您的意见:

DateTime dv;
if(!DateTime.TryParse(dob,out dv)){
   MessageBox.Show("Please enter a valid date");
   return;
}
....

Cleary,您也可以使用Parse并捕获异常,但这将是一种糟糕的风格。最好使用TryParse。我只检查了一个日期值。您可以根据自己的需要扩展逻辑。希望这能有所帮助。

这是因为当您访问Text属性时,一个空的文本框会返回一个空字符串,如果传递了空字符串,DateTime.Passe()将引发该异常。

使用string.IsNullOrEmpty(tbStartDate.Text)检查其是否为空。

我建议使用DatetimePicker来选择日期,这将返回一个有效的DateTime值,您可以使用该值来进一步处理

你必须像这样使用Datetime.TryParse

if(!DateTime.TryParse(dob))

我建议您使用try catch block来捕获FormatException,这样,如果用户没有以正确的格式输入日期,它就会捕获异常并给出您选择的消息

try
{
    string dob = tbStartDate.Text;
    DateTime dv = DateTime.Parse(dob);
    string format1 = dv.ToString("yyyy-MM-dd");
    string dob2 = tbEndDate.Text;
    DateTime dt2 = DateTime.Parse(dob2);
    string format2 = dt2.ToString("yyyy-MM-dd");
}
catch (System.FormatException)
{
    MessageBox.Show("pls enter valid date format");
}

使用DateTimePicker始终是一种更好且用户友好的方法

相关内容

  • 没有找到相关文章

最新更新