Нашел ответ, тупанул малясь. Короче, если вы и считаете разницу от года, то и присваивайте DateTimePicker компонент .Year, короче говоря, вот как должен выглядеть код, чтобы все работало:
private void день_РожденияDateTimePicker_ValueChanged(object sender, EventArgs e)
{
if (день_РожденияDateTimePicker.Value.Year >
DateTime.Now .Year - 16 || день_РожденияDateTimePicker.Value.Year <
DateTime.Now .Year - 45)
{
MessageBox.Show("Допускаются студенты возрастом от 16 и более лет", "Ошибка");
}
}
день_РожденияDateTimePicker.Value = new DateTime( DateTime.Now .Year - 17);
Сегодня дата 27.02.24, отнимем 17 лет, получим примерно 27.02.2007
Так вот, этот код включается во время запуска формы, тобишь день_РожденияDateTimePicker принимает значение уже при запуске, так вот что пишет мне сам Visual Studio:
System.ArgumentOutOfRangeException: "Значение '01.01.0001 0:00:00' недопустимо для 'Value'. 'Value' должно лежать в диапазоне от 'MinDate' до 'MaxDate'.
Имя параметра: Value"
Вот мой диапазон для день_РожденияDateTimePicker:
MaxDate - 31.12.9998
MinDate - 01.01.1753
Код не должен себя так вести, так как все работает в рамках.
Еще один прикол:
У меня есть такой код:
private void день_РожденияDateTimePicker_ValueChanged(object sender, EventArgs e)
{
if (день_РожденияDateTimePicker.Value >= new DateTime( DateTime.Now .Year - 16 ))
{
MessageBox.Show("Допускаются студенты возрастом от 16 и более лет", "Ошибка");
}
}
Входящее значение для день_РожденияDateTimePicker является год: 1989-01-01
и какого то хера это условие выполняется, для си шарп 1989 год больше 2008 года
ПОМОГИТЕ дауну