Вместо использования TextBox
для ввода времени используйте DateTimePicker
, просто измените свойство Format
на Time
.
Обрабатывайте событие Validating
DateTimePicker
, и еслион недействителен, просто установите e.Cancel = False
, чтобы они не могли сохранить изменения, если они не действительны.Или, если вы хотите, чтобы они могли покинуть DateTimePicker
и просто изменить цвет, просто обработайте событие ValueChanged
.
Что касается вашего примера кода, я на самом деле не смотрел на логикуэто, но вместо того, чтобы иметь один и тот же код 21 раз, просто переместите код в отдельную функцию, а затем вызовите эту функцию с начальным и конечным временем в качестве параметров, и он может вернуть рабочее время в качестве возвращаемого значения.
Я не уверен, как выглядит ваш пользовательский интерфейс, но если вы повторяете элементы управления временем начала и окончания также несколько раз, возможно, стоит взглянуть на создание собственного пользовательского элемента управления, который может содержать по одному элементу управления временем начала и окончания.и тогда вы могли бы иметь валидацию внутри этого пользовательского элемента управления, поэтому вам не нужно иметь много обработчиков событий и т. д.