Я использую событие ввода DateTimePicker для установки максимальной даты на вчерашнюю дату, так как я не контролирую, решит ли пользователь оставить приложение открытым на несколько дней.
Я также использую событие DateTimePicker ValueChanged для настройки моих диалогов на основе выбранных дат.
Проблема, с которой я сталкиваюсь, заключается в том, что каждый раз, когда я настраиваю Макс. Дату через событие ввода, также вызывается событие ValueChanged, а значение, полученное из DateTimePicker, не является пользовательским значением. Могу ли я что-либо сделать, чтобы только прослушать изменение ввода от пользователя?
Похоже, что DateTimePicker CloseUp помогает, но только если пользователь использует календарь для выбора даты, а не вводит ее вручную.
private void dtpStartDate_Enter(object sender, EventArgs e)
{
// Reports cannot be generated later than today.
dtpStartDate.MaxDate = DateTime.Now.Date.AddDays(-1.0);
}
private void dtpStartDate_ValueChanged(object sender, EventArgs e)
{
DateTime startDate = dtpStartDate.Value.Date;
DateTime endDate = dtpEndDate.Value.Date;
dtp_CustomExclusionFrom.MinDate = startDate;
dtp_CustomExclusionFrom.MaxDate = endDate;
dtp_CustomExclusionTo.MinDate = startDate;
dtp_CustomExclusionTo.MaxDate = endDate;
foreach (ListViewItem item in lv_CustomExclusionDates.Items)
{
String dateString = item.Text;
DateTime exclusionDate = DateTime.Parse(dateString);
if (exclusionDate < startDate ||
exclusionDate > endDate)
{
lv_CustomExclusionDates.Items.Remove(item);
}
}
}
Я ожидаю, что событие ValueChanged будет запускаться только пользователем, а не изменениями MaxDate объекта DateTimePicker.