Интерфейс ISupportlnitialize: поддержка инициализации в конструкторе

тем самым предотвращается попытка элемента

Интерфейс ISupportlnitialize Позволяет элементам управления отложить действия со значениями, устанавливаемыми во взаимозсвязанных свойствах, пока контейнер не сообщит элементу управления, что все значения установлены. Тем самым предотвращается попытка элемента управления что-то сделать с установленным свойством, когда эти действия могут потерпеть неудачу из-за того, что сначала нужно установить какое-то другое свойство; таким образом, эти свойства можно устанавливать в любом порядке. Конструктор Windows Forms Использует этот интерфейс, так что коду, который он генерирует для установки свойств, не требуется что-либо знать о правильном порядке установки взаимосвязанных свойств. Иногда компоненты имеют взаимосвязанные свойства, которые, чтобы все работало правильно, требуется устанавливать логически одновременно. Но поскольку за один раз можно исполнить только одну строчку кода, требование одновременной установки нескольких свойств оказывается проблематичным. Например, если вы специфицируете свойство DataMem — Ber Для компонента BindingSource Или элемента управления DataGrid — View, Это свойство предоставляет информацию о том, какая составная часть объекта, устанавливаемого в качестве свойства DataSource, Должна использоваться для привязки данных. Любое изменение свойства DataMember Делает необходимым обновление привязок данных. Однако свойство DataMember Не поймет, что от него требуется, если только ранее уже не было установлено свойство DataSource. Вы не можете быть уверены, что свойства будут устанавливаться в правильном порядке, сначала DataSource, А затем DataMember. Кроме того, что получится, если вы захотите взять компонент или элемент управления, который был уже привязан к какому-то источнику данных, и заменить последний новым источником данных? Вы могли бы изменить сначала свойство DataSource, А могли бы сначала изменить свойство DataMember. Когда конструктор пишет код, руководствуясь вашими интерактивными действиями вроде выбора в контекстной вкладке или установки свойств в окне Properties, Нельзя сказать наверняка, в каком порядке будут инициализироваться эти свойства в написанном коде. Поэтому должен быть способ сигнализировать элементу управления или компоненту, что вы приступаете к этапу инициализации, а затем, когда вы закончите с этим этапом, снова уведомить его. Если можно это сделать, то компонент может подождать с установкой взаимосвязей или использованием значений любых свойств, пока вы не сигнализируете ему, что инициализация завершена. Именно для этого предназначен интерфейс ISupportlnitialize.

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

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