Рейтинг:
9
Jochen Arndt
Почему вы называете это в ValueChanged
обработчик?
Он может работать не так, как ожидалось, потому что он изменяется каждый раз, когда пользователь изменяет одно из полей выбора.
Однако сообщение об ошибке вполне понятно:
Прошедшая дата находится после фактической MaxDate
установка.
Этого можно избежать, установив MinDate
первым MinDateTime
, затем MaxDate
и , наконец, новый MinDate
использовать:
dateTimePicker1.MinDate = DateTimePicker.MinDateTime;
dateTimePicker1.MaxDate = new DateTime(year+1,03,31);
dateTimePicker1.MinDate = new DateTime(year,04, 01);
Member 13854008
спасибо господину ,что ошибка разрешилась, но как в этом году назначить сюда
int year = dateTimePicker1.Value.Year; //этот код выбирает только системный год.
Я хочу выбрать все годы здесь. пожалуйста, помогите, это тоже сэр.
Jochen Arndt
Эта строка получает фактически выбранный год из элемента управления. Если вы не установили это в своем коде, то средство выбора будет инициализировано текущей датой при создании.
Мне непонятно, чего вы в конце концов хотите добиться. Если вы хотите, чтобы пользователь указал диапазон дат, вы должны использовать два элемента управления:
Один для даты начала и один для даты окончания.
Member 13854008
сэр ,тогда как же этот контроль может быть дан в коде?
dateTimePicker1.MinDate = Datetimepicker Для.MinDateTime;
dateTimePicker1.MaxDate = new DateTime(год+1,03,31);
dateTimePicker1.MinDate = новая дата и время(год,04, 01);
на самом деле в этом коде год задается как год без какого-либо другого другого значения, поэтому мы можем назначить все годы в переменной(год)( в противном случае год кажется красной ошибкой). так как же все годы могут быть назначены в этой переменной (год)
Jochen Arndt
Что значит "все годы"?
Средство выбора даты и времени позволяет выбрать только одну дату и время. Переменная int, например 'year', также может содержать только одно значение. Если вам нужен диапазон, используйте две переменные / элементы управления.
Члены MinDate и MaxDate ограничивают допустимый диапазон ввода для этой единственной даты. Если это то, что вы хотите, установите их соответственно.
Member 13854008
сэр, все годы означают не выбирать все годы одновременно, но когда мы выбираем один год по ошибке ,мы можем выбрать там другой год ,насколько это возможно.
Сэр, пожалуйста, дайте намек тоже.
Jochen Arndt
Я все еще не понимаю.
Пользователь может выбрать любую дату в пределах лимита и изменять свой выбор до тех пор, пока элемент управления не будет закрыт. Это просто зависит от того, когда ваш код читает текущий выбор. Когда элемент управления является частью диалогового окна, это обычно делается в обработчике кнопки OK.
На самом деле вы используете обработчик ValueChanged элемента управления picker. Это не самое подходящее место для чтения выбора, потому что вы не знаете, является ли это конечным значением.
Member 13854008
хорошо, сэр, я изменил обработчик изменения значения,тогда как этот предел или диапазон может быть задан в этом коде, или как в настоящее время можно выбрать разные годы
Jochen Arndt
Предположим, что у вас есть диалоговое окно, содержащее средство выбора:
- При создании диалога установите ограничения. Я не могу помочь с этим, потому что я их не знаю.
- В обработчике кнопки OK считайте текущее значение. Проверьте значение по желанию (обычно это не обязательно).
Чтобы дать дополнительную помощь, я должен знать, что Вы, наконец, хотите: какие даты пользователь может установить, где находится элемент управления (например, диалоговое окно) и как сигнализируется конец пользовательского ввода (например, кнопка OK / Apply).
Все вышеперечисленное-это этапы проектирования, которые необходимо выполнить перед написанием любой строки кода.
Member 13854008
частный недействительными методе button2_click(объект отправителя, EventArgs в электронной)
{
год инт = инт.Синтаксический анализ(поле combobox1.Текст);
dateTimePicker1.MinDate = Datetimepicker Для.MinDateTime;
dateTimePicker1.MaxDate = new DateTime(год + 1, 03, 31);
dateTimePicker1.MinDate = новая дата и время(год, 04, 01);
}
--------------------------------------------------------------------
Здесь я использовал //int year = int.Parse(comboBox1.Text);//
этот код для выбора года.Но в этом году выберите в combobox во время выполнения.
но пользователь хочет выбрать год из самого datetimepicker во время выполнения.
пример:если пользователь выбирает 2014 datetimepicker, он показывает период с апреля 2014 года по март 2015 года .
затем ,если пользователь выбирает другой(2016) год из datetimepicker, он показывает апрель 2016 года по март 2017 года, здесь месяц ограничивается только с апреля по март
Jochen Arndt
Показанный код не выбирает дату в средстве выбора. Он только устанавливает диапазон.
Если вы устанавливаете диапазон таким образом, когда пользователь выбирает 2014 год, он не может выбрать 2016 после этого, потому что это находится вне диапазона.
Сначала определите, что пользователь может ввести (тип элементов управления и то, что они содержат) и что должно произойти с введенными данными (получение данных и их обработка) при определенных действиях (изменение элементов управления и активация кнопок). Как только это будет сделано, вы можете подумать о том, как это может быть реализовано с помощью кода.
Для меня это выглядит так, как будто вы пытаетесь сделать это наоборот:
Писать код, не зная, что нужно делать.
Я все еще не знаю, что ты в конце концов хочешь сделать. Если вы, например, хотите иметь диапазон в один год, начинающийся с даты начала, просто используйте datepicker без каких-либо корректировок. Как только пользователь нажмет кнопку ОК, получите дату и добавьте один год в Днях, чтобы получить конечную дату. При необходимости этот параметр можно использовать в другом средстве выбора, чтобы разрешить выбор только в пределах этого диапазона.
Member 13854008
хорошо, сэр, я получил его и очень благодарен Вам за ваше внимание.