Ловить случаи, когда текст набран в DatePicker не допустимый формат даты, вы должны обрабатывать DateValidationError
event. Вы получите код System.FormatException
, если формат неприемлем.
Чтобы ограничить раскрывающийся календарь до текущего года, вы можете установить свойства DisplayDateStart
и DisplayDateEnd
- но это не мешает вам вводить другие даты в текстовое поле.
MyDatePicker.DisplayDateStart = new DateTime(DateTime.Now.Year, 1, 1);
MyDatePicker.DisplayDateEnd = new DateTime(DateTime.Now.Year, 12, 31);
Чтобы ограничить DatePicker на текущий год установить BlackoutDates
property исключить все, кроме текущего года даты. Например:
// Exclude all dates before the start of this year
MyDatePicker.BlackoutDates.Add(
new CalendarDateRange(DateTime.MinValue, new DateTime(DateTime.Now.Year - 1, 12, 31)));
// Exclude all dates after the end of this year
MyDatePicker.BlackoutDates.Add(
new CalendarDateRange(new DateTime(DateTime.Now.Year + 1, 1, 1), DateTime.MaxValue));
в надлежащей отформатированную дату, которая попадает в один из диапазонов дат затемнения будет вызвать ArgumentOutOfRangeException быть переданы в обработчик события DateValidationError
'строка [] F = {«дд/мм/year "};' <- 'yyyy' вместо' year'. В любом случае, 'DateTime' не имеет никакого формата, вы должны думать об этом представлении. –
Даты не имеют формата. Как вы представляете их на дисплее, что дает им «формат». Если вы получаете дату из DateTimePicker, не пытайтесь «преобразовать» ее в какой-то «формат». Используйте его, и когда вам нужно отобразить его, используйте строку формата (IE: _.... ToString («MM/dd/yyyy»); _) – Steve
@Steve Я не пытаюсь представить их или преобразовать в какой-либо другой формат , Все, что я хочу, это DatePicker, чтобы разрешить запись только в формате dd/mm/yyyy и убедиться, что дата введена только в текущем году. Спасибо – pixel