2015-06-22 5 views
-2

Я пытаюсь вставить дату в текстовом поле и делаю управление (например, не позволяет пользователю ставить дату, которая имеет еще впереди), но он бросает исключениеСоздание элементов управления на дату

string[] array = txtData.Text.Split('/'); 
int[] arrayint = new int[3]; 
arrayint[0] = Convert.ToInt32(array[0]); 
arrayint[1] = Convert.ToInt32(array[1]); 
arrayint[2] = Convert.ToInt32(array[2]); 
try 
{ 
    if (arrayint[0] > 0 && arrayint[0] < 32) 
    { 
     if (arrayint[1] > 0 && arrayint[1] < 13) 
     { 
      if (DateTime.Compare(DateTime.Today, Convert.ToDateTime(txtData.Text)) <= 0) 
      { 
       string s = txtTitolo.Text + ", " + txtData.Text + ", " + txtDim.Text + ", " + txtFormato.Text + ", " + txtRisoluzione.Text; 
       listVideo.Items.Add(s); 
      } 
     } 
    } 
} 
catch (Exception) 
{ 
    MessageBox.Show("data non valida"); 
} 

Спасибо всем, кто ответит

+0

Какая ошибка? –

+0

В чем исключение _exactly_? На какой линии? Что такое «CurrentCulture»? Не могли бы вы быть более конкретными? –

+0

Исключение пытается рассказать вам, в чем проблема. Не игнорируйте его. – David

ответ

0

Попробуйте это:

DateTime dateTime; 
if (DateTime.TryParseExact(txtData.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    //conversion succeeded, you date is in dateTime var 
} 
else 
{ 
    //conversion failed 
} 

EDIT:

DateTime dateTime; 
    if (DateTime.TryParseExact("22/06/2018", "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
    { 
     Console.WriteLine("DATE: " + dateTime.ToShortDateString()); 
    } 
+0

он всегда говорит о недопустимой дате – Fante

+0

что находится в 'txtData.Text', точно? – voytek

+0

ex: 22/06/2018 или 22/06/2012. – Fante

0

это, как я изменил его

DateTime dateTime; 
if (DateTime.TryParseExact(txtData.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    MessageBox.Show("date has been added"); 
    string s = txtTitolo.Text + ", " + txtData.Text + ", " + txtDim.Text + ", " + txtFormato.Text + ", " + txtRisoluzione.Text; 
    listVideo.Items.Add(s); 
} 
else 
{ 
    MessageBox.Show("invalid date"); 
} 
0

Вы можете передать массив приемлемых форматов, как показано ниже:

 DateTime dateTime; 
     string[] formats = { "d/M/yyyy", "dd/M/yyyy", "d/MM/yyyy", "dd/MM/yyyy", "d/M/yy", "dd/M/yy", "d/MM/yy", "dd/MM/yy" }; 
     if (DateTime.TryParseExact(txtData.Text, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
     { 
      MessageBox.Show("date has been added"); 
      string s = txtTitolo.Text + ", " + txtData.Text + ", " + txtDim.Text + ", " + txtFormato.Text + ", " + txtRisoluzione.Text; 
      listVideo.Items.Add(s); 
     } 
     else 
     { 
      MessageBox.Show("invalid date"); 
     } 
+0

это всегда дает мне то, что я надел на другое как результат – Fante

+0

Тогда ваш ** вход ** не входит в один из форматов, перечисленных в массиве, или они находятся в этом формате, но недействительные даты (например, значение дня больше, чем количество дней для этого месяца). Сделайте MessageBox покажет вам «неверную дату» и/или выведет их на консоль, чтобы вы могли видеть, что происходит ... –

0

это, как она выглядит сейчас

string date = txtData.Text; 
       DateTime dt = DateTime.ParseExact(date,"dd/MM/yyyy",System.Globalization.CultureInfo.CurrentCulture); 
       if (DateTime.Compare(dt, DateTime.Now) > 0) 
        MessageBox.Show("data non valida"); 
       else 
       { 
        MessageBox.Show("date has been added"); 
        string s = txtTitolo.Text + ", " + txtData.Text + ", " + txtDim.Text + ", " + txtFormato.Text + ", " + txtRisoluzione.Text; 
        listVideo.Items.Add(s); 
       } 

Кроме того, всякий раз, когда я пытаюсь распечатать список в файле xls, он не печатает данные, а только другие 4 значения, поэтому он будет выглядеть так: title || size | format | resoluti на

Смежные вопросы