开发者

text box does not show the error

I am trying to validate two data of birth text box fields if the member does not enter in these two boxes an error message will popped out like "pls enter valid date format"

by using the following code

       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 ");

     }

when i am trying to save with out entering the textbox values it was showing error like this "String was not recognized as a valid DateTime".

can any one help on this....

this is modified code still it was showing error at Datetime DV;

         private void btnCTimetablessave_Click(object sender, EventArgs e)
    {
        string dob = tbStartDate.Text;
        DateTime dv;
        if (!DateTime.Tr开发者_运维问答yParse(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");

still it was showing error like this "String was not recognized as a valid DateTime" at datetime Dv;

and this is modified code third time

       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");
     }


Don't use DateTime.Parse. Use DateTime.TryParse instead. The result is a boolean value that returns true if the parsing was successfully.

Update As requested in your comment:

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

Cleary, you also can use Parse and catch the exception, but this would be bad style. Better to use TryParse. I have only checked for one date value. You can extend the logic for your needs. Hope this helped.


It is because an empty textbox returns an empty string when you access the Text property and DateTime.Parse() will throw that exception if passed an empty string.


Check using string.IsNullOrEmpty(tbStartDate.Text) whether its blank or not.

I would recommend using a DatetimePicker for selecting the date's which will return you a valid DateTime value which you can use for further processing


You have to use Datetime.TryParse like this

if(!DateTime.TryParse(dob))


I suggest you to use try catch block to catch FormatException so that if user doesn't enter date in proper format it will catch the exception and give message of your choice

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");
}

OR

using DateTimePicker is Always a better and user friendly approach

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜