Метод Begin Edit

это необходимо поскольку в зависимости

Как вы можете видеть из кода, метод BeginEdit сохраняет текущие значения полей в кэшируемых полях и устанавливает флаг, показывающий, что вы находитесь в режиме редактирования. Это необходимо, поскольку в зависимости от того, как организована привязка данных, BeginEdit может вызываться формой неоднократно, и вы хотите сохранить старые значения в именно в тот момент, когда редактирование действительно началось, но не повторно, когда вступает в действие остальная часть процесса редактирования. Метод EndEdit по существу принимает текущие значения, устанавливая флаг редактирования обратно в false. Метод CancelEdit откатывает изменения, устанавливая текущие значения свойств в первоначальное состояние, используя кэшированные значения. Реализовав таким образом IEditableObject, ваш специальный рабочий объект сможет теперь вести себя подобно набору данных, когда будет редактироваться в сетке вроде DataGridView. А именно, если несколько свойств некоторой строки были отредактированы, а затем пользователь нажимает клавишу Esc, изменения будут откачены и в объекте будут восстановлены исходные значения. Такая простая реализация не учитывает тот факт, что концептуально коллекция orders также может быть изменена в ходе логического редактирования объекта Customer. Вы, возможно, захотите обеспечить откат и этих изменений, поскольку заказы являются дочерними объектами, и логически они «являются частью» объекта Customer. Однако поскольку интерфейс IEditableObject в основном используется в контексте привязки данных, вам, чтобы модифицировать коллекцию Orders, ассоциированную с выбранным заказчиком, придется переключить фокус на сетку Orders, а такое переключение фокуса в любом случае вызовет EndEdit для объекта Customer. Могут быть и более развитые сценарии, где вы, возможно, захотите реализовать интерфейс IEditableObject для поддержки полностью транзакционного редактирования объекта, как через привязанный элемент управления, так и программным путем, но на самом деле он для этого не предназначен.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *