Я занимаюсь разработкой приложения на C # winforms. Базовая модель имеет, среди прочего, свойство StartTime и EndTime DateTime, с тем ограничением, что StartTime должен предшествовать EndTime. Чтобы дать пользователю возможность изменять эти свойства, я заполняю два комбинированных списка выборочными значениями и подключаю каждый комбинированный список, так что выбор другого значения изменит соответствующее свойство в модели.
Проблема этого подхода заключается в том, что он позволяет пользователю попытаться выбрать недопустимое значение. В идеале мне бы хотелось, чтобы, когда пользователь выбирает определенное значение StartTime, возможные значения EndTime ограничиваются, так что невозможно выбрать значения EndTime раньше, чем это. Один из способов добиться этого - заполнить конечный комбинированный список новыми допустимыми значениями, а затем выбрать то, что было ранее. Для этого потребуется, чтобы мой обработчик событий SelectedIndexChanged был временно отключен, поскольку в противном случае повторный выбор EndTime вызовет бесконечный цикл, чередующийся между заполнением / повторным выбором комбинированных списков StartTime и EndTime соответственно.
Другое решение - сохранить все значения выборок, а затем отменить любые недопустимые изменения, которые пользователь пытается внести, но тот факт, что пользователь может попытаться выбрать недопустимые значения, меня не привлекает. Мне не нравится временно отключать обработчик событий, так как он не выглядит чистым, но я не вижу более эффективных решений. У вас есть предложения или улучшения?