У меня есть приложение c # winforms с множеством различных элементов управления, которые связаны (через bindingsource) с различными свойствами моего бизнес-объекта (и этот объект реализует INotifyPropertyChanged). Когда мой пользователь устанавливает определенный элемент управления на определенное значение, мне нужно изменить значение другого свойства (в коде) и, возможно, даже отключить элемент управления, который привязывается к этому свойству. Например, у меня есть datetimepicker, который отображается на свойство datetime. Если мой пользователь вводит значение времени меньше 00:10:00 (ЧЧ: ММ: СС), мне нужно снять флажок (который привязан к свойству bool). В настоящее время у меня есть код в проверяющем обработчике событий, который просматривает значение в datetimepicker, и если .Hour == 0 и .Minute <10, я программно устанавливаю значение свойства bool (с которым связан флажок) равно ложному. Когда я делаю это, флажок становится непроверенным, но значение в datetimepicker возвращается к тому, что было до того, как пользователь ввел время, в результате которого булевому свойству было присвоено значение false. </p>
Если я наблюдаю значение datetimepicker в отладчике, оно сбрасывается после выполнения этой строки кода:
businessObject.booleanVariable = false;
Нужно ли что-то делать, чтобы принудительно возвращать значение datetimepicker в свойство объекта, прежде чем программно установить логическое свойство в false?!? Или я все об этом говорю не так? Есть ли другой способ, которым должны обрабатываться связанные элементы управления, которые могут повлиять на другие связанные элементы управления?