Улучшенное управление источниками

net x это был по

До сих пор мы имели дело исключительно с индивидуальными элементами управления на форме и привязкой источников данных непосредственно к этим элементам. В. NET 1.x это был, по существу, единственный путь. Однако одна из проблем такого подхода состоит в том, что если во время выполнения требуется сменить источник данных, на который опирается несколько привязанных элементов управления, то вам придется написать код для переустановки каждого из них. Кроме того, если вам требуется выяснить, какой элемент в привязанной коллекции является текущим, или получать уведомления о смене источника, вам придется через контекст привязки глубоко погрузиться в устройство формы, чтобы получить доступ к синхронизирующим объектам. В. NET 2.0 все эти проблемы решает компонент BindingSource. Источник привязки играет роль посредника между привязанными элементами управления и ассоциированным с ними источником данных. Он обеспечивает комплексное решение для доступа или управления контекстом привязки для одного или нескольких элементов управления на форме. Вы привязываете элемент управления на форме к источнику привязки, а его, в свою очередь, привязываете к источнику данных. Если вам требуется сменить источник данных, к которому привязаны элементы управления, вам достаточно будет изменить значения свойств DataSource И DataMember В источнике привязки; все привязанные к нему элементы управления автоматически обновятся. Если вам требуется определить текущий элемент в источнике данных, вы можете получить его непосредственно через источник привязки. Если вы хотите программно изменить текущий элемент в источнике данных, в источнике привязки имеются для этого методы и свойства; а если захотите получать уведомления об изменениях в источнике данных, то источник привязки предоставит для этого события, которым можно назначить обработчики. Отношения между источником привязки, привязанными элементами управления и источником данных изображены на рис. 3.3.

Если мы объединим код из листингов 3.2, 3.3 и 3.4, чтобы собрать все привязки данных для сетки, комбинированного списка и текстовых полей в одном примере, добавим к форме источник привязки и модифицируем элементы управления так, чтобы они были привязаны не к источнику данных, а к источнику привязки, то код будет выглядеть следующим образом: