Установите значение DateTimePicker равным нулю - PullRequest
10 голосов
/ 10 мая 2011

Я разрабатываю пользовательский интерфейс WinForms с двумя DateTimePicker элементами управления. Первоначально я хочу установить значение элементов управления на ноль, пока пользователь не выберет дату. Если пользователь не выберет дату, он передаст значение null в базу данных.

По умолчанию используется текущая дата.

Не могли бы вы предложить что-нибудь или приложить фрагмент кода, который поможет мне.

Я попытался установить свойство MinDate, но оно не работает.

Код находится в C # .Net.

Спасибо, Манали.

Ответы [ 8 ]

14 голосов
/ 11 января 2013

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

Установить свойство элемента управления ShowCheckBox = true

Когда вы привязываете значение к нему, делайте что-то вроде

 if (value == DateTime.MinValue) {
    datePicker.Checked = false;
  } else {
    datePicker.Checked = true;
    datePicker.Value = value;
  }

При считывании значения проверьте свойство Checked.

Если вам не нравится отображаемое значение, когда оно не отмечено, вы можете объединить его с другими предложениями.

  if (!datePicker.Checked) {
    // hide date value since it's not set
    datePicker.CustomFormat = " ";
    datePicker.Format = DateTimePickerFormat.Custom;
  } else {
    datePicker.CustomFormat = null;
    datePicker.Format = DateTimePickerFormat.Long; // set the date format you want.
  }
8 голосов
/ 13 ноября 2012

Я знаю, что это старый пост, но другие могут все еще найти это полезным.Это довольно элегантно и лаконично.Я использовал это с .Net 4.0 DateTimePicker, но более ранние версии должны работать с минимальной настройкой.Он использует MinDate и Checked.

    // Use ValueChanged to decide if the value should be displayed:
    dateTimePicker1.ValueChanged += (s, e) => { dateTimePicker1.CustomFormat = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ? "MM/dd/yyyy" : " "; };

    //When getting the value back out, use something like the following:
    DateTime? dt = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ?  (DateTime?) dateTimePicker1.Value : null; 
    // or
    DateTime dt2 = (dateTimePicker1.Checked && dateTimePicker1.Value != dateTimePicker1.MinDate) ?  dateTimePicker1.Value : DateTime.MinValue; 
2 голосов
/ 22 декабря 2015

Предположим, что dtpStartDate является вашим элементом управления DateTimePicker.

Введите этот код в Page_Load-

`dtpStartDate.Format = DateTimePickerFormat.Custom;
            dtpStartDate.CustomFormat = " ";`

Запишите этот код в событие Value_Changed-

`startDate = Convert.ToString(dtpStartDate.Value);
        dtpStartDate.Format = DateTimePickerFormat.Short;`

здесь выбран «короткий» в качестве формата.Вы можете выбрать «Длинный» и другие доступные опции.

2 голосов
/ 11 мая 2011

Чтобы отобразить нулевое значение в элементе управления DateTimePicker, внесите следующие изменения в файл Designer.cs:

this.DateTimePicker.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
this.DateTimePicker.CustomFormat = " ";

Когда пользователь выбирает дату, введите свойство ValueChanged в элементе управления и создайте формат в соответствии с вашими потребностями. Это отобразит дату в элементе управления.

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

Если вы хотите установить / инициализировать значение как пустую или пустую строку:

  1. объявить временную строковую переменную, скажем, temp
  2. temp = DateTimePicker.CustomFormat.ToString();
  3. проверить, является ли temp пустой строкой. Если так, обращайся как хочешь.

Это самый простой способ, который я нашел.

1 голос
/ 10 мая 2011

Надеюсь, это поможет вам Ссылка1 Для отображения пустого поля в поле выбора

и это тоже Ссылка2

1 голос
/ 10 мая 2011

Может быть, вам нужно создать UserControl с появлением TextBox, и когда пользователь нажимает на Calender Show, когда вы выбираете Date, установите его в TextBox.Это допустит нулевые значения.

DateTimePicker не допускает нулевое значение.

0 голосов
/ 14 сентября 2016

Это код используемого для выбора даты и времени, который я использую:

0 голосов
/ 30 апреля 2015
dateTimePicker1.CustomFormat = " ";
...