текстовое поле не показывает ошибку - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь проверить два поля данных текстового поля рождения, если участник не входит в в этих двух полях будет отображаться сообщение об ошибке, например, "пожалуйста, введите правильный формат даты"

используя следующий код

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

     }

когда я пытаюсь сохранить без ввода значений в текстовом поле, это выдает ошибку вроде этой Msgstr "Строка не была распознана как действительный DateTime".

может ли кто-нибудь помочь в этом ....

это модифицированный код, который все еще показывал ошибку в 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» в 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");
     }

Ответы [ 5 ]

5 голосов
/ 28 июня 2011

Не используйте DateTime.Parse.Вместо этого используйте DateTime.TryParse.Результатом является логическое значение, которое возвращает true, если синтаксический анализ прошел успешно.

Обновление В соответствии с вашим комментарием:

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

Очистить, вы также можете использовать Parseи поймать исключение, но это будет плохой стиль.Лучше использовать TryParse.Я проверил только одно значение даты.Вы можете расширить логику для ваших нужд.Надеюсь, это помогло.

1 голос
/ 28 июня 2011

Это потому, что пустое текстовое поле возвращает пустую строку при доступе к свойству Text, и DateTime.Parse () выдает это исключение, если передана пустая строка.

0 голосов
/ 28 июня 2011

Я предлагаю вам использовать 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");
}

OR

использование DateTimePicker всегда лучший и удобный для пользователя подход

0 голосов
/ 28 июня 2011

Вы должны использовать Datetime.TryParse, как это

if(!DateTime.TryParse(dob))
0 голосов
/ 28 июня 2011

Проверьте с помощью string.IsNullOrEmpty(tbStartDate.Text), является ли оно пустым или нет.

Я бы рекомендовал использовать DatetimePicker для выбора даты, которая вернет вам действительное значение DateTime, которое вы можете использовать для дальнейшей обработки

...