Я недавно использовал приложение, которое было впечатляющим. Все формы, унаследованные от их собственных классов и «формы», обладали потрясающим набором функциональных возможностей и выглядели чокнутыми.
Что меня интересует, так это «особенность» формы. Это был проект C # WinForms, и он меня просто потряс.
Формы были привязаны к объектам, которые группа написала для поддержки двустороннего связывания данных (в некоторой степени). Их поведение было довольно простым:
Все формы ввода данных имели элементы управления, которые унаследованы от текстового поля, и они были привязаны к свойствам объекта. Ввод данных сразу же проверял их, и поле имело светло-розовый, если проверка не пройдена, и светло-зеленый, если он прошел. Если поле когда-либо станет синим, это на самом деле означает, что значение в базе данных, к которой привязана форма, изменилось, и ваши изменения в элементах управления были немедленно сохранены при вводе действительных значений. Это был случай, когда иногда необходимо было заполнить раздел элементов управления, прежде чем происходило сохранение. Но это было все автоматически. Вы можете остановиться в любой момент, вернуться позже и продолжить, не спасая себя.
И, как я уже сказал, если кто-то еще редактирует те же значения записей, которые они изменяют, ваши текстовые поля становятся синими, и вы знали, что вам нужно перезагрузить экран, чтобы увидеть актуальную информацию.
Все это произошло благодаря использованию их собственного класса формы, который они написали, и их собственных элементов управления textbox, привязанных к свойству объектов.
Мне в основном интересно, как, черт возьми, объект узнал, что значение было изменено кем-то другим. Это, конечно, не опрашивает базу данных. Эта система была потрясающей. Блеск не остановился там.
Для простоты. Как я могу создать объект или коллекцию объектов, чтобы имитировать поведение. Я не собираюсь, но я даже не вижу, как.
Спасибо