Поделиться через


Получение уведомления об изменении данных, связанных с элементом управления, в Windows Forms

Обновлен: Ноябрь 2007

Одним из наиболее важных понятий привязки данных Windows Forms является уведомление об изменении. Для того чтобы источник данных и связанные элементы управления содержали самые последние данные, необходимо добавить к привязке данных уведомление об изменении. Иными словами, требуется уведомлять связанные элементы управления об изменениях, выполненных в источнике данных, а источник данных — об изменениях связанных свойств элементов управления.

В зависимости от вида привязки данных, существуют различные виды уведомлений об изменении.

  • Простая привязка, при которой одно свойство элемента управления привязывается к одному экземпляру объекта.

  • Привязка на основе списка, которая позволяет привязывать одно свойство элемента управления к свойству элемента списка или свойство элемента управления к списку объектов.

Кроме того, при создании элементов управления Windows Forms, которые необходимо использовать для привязки данных, требуется применить к этим элемента управления шаблон PropertyNameChanged, чтобы изменения связанных свойств элемента управления отражались в источнике данных.

Уведомление об изменении для простой привязки

В случае простой привязки бизнес-объекты должны отправлять уведомления об изменении при изменении значения связанного свойства. Для этого можно предоставить событие PropertyNameChanged для каждого свойства бизнес-объекта и привязать бизнес-объект к элементам управления с помощью компонента BindingSource или использовать рекомендуемый метод, который заключается в том, что бизнес-объект реализует интерфейс INotifyPropertyChanged и инициирует событие PropertyChanged при изменении значения свойства. Дополнительные сведения см. в разделе Практическое руководство. Реализация интерфейса INotifyPropertyChanged. Если бизнес-объект реализует интерфейс INotifyPropertyChanged, использование компонента BindingSource для привязки объекта к элементу управления становится необязательным, однако рекомендуется все же использовать компонент BindingSource.

Уведомление об изменении для привязки на основе списка

Для предоставления связанным элементам управления сведений об изменении свойства (т.е. изменении значения свойства элемента списка) или списка (т.е. об удалении или добавлении элемента списка) Windows Forms опирается на связанный список. Поэтому списки, используемые для привязки данных, должны реализовывать интерфейс IBindingList, который поддерживает оба типа уведомлений об изменении. Класс BindingList<T>, который представляет собой общую реализацию интерфейса IBindingList, предназначен для использования вместе с привязкой данных Windows Forms. Можно создать класс BindingList<T>, содержащий тип бизнес-объекта, который реализует интерфейс INotifyPropertyChanged, после чего список будет автоматически преобразовывать события PropertyChanged в события ListChanged. Если связанный список не реализует интерфейс IBindingList, необходимо привязать список объектов к элементам управления Windows Forms с помощью компонента BindingSource. Компонент BindingSource обеспечивает преобразование свойства в список, аналогичное операции, выполняемой классом BindingList<T>. Дополнительные сведения см. в разделе Практическое руководство. Получение уведомления об изменении данных с использованием компонента BindingSource и интерфейса INotifyPropertyChanged.

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

И наконец, на стороне элементов управления можно предоставить событие PropertyNameChanged для каждого свойства, предназначенного для привязки данных. После этого изменения свойств элемента управления будут отражаться в связанном источнике данных. Дополнительные сведения см. в разделе Практическое руководство. Применение шаблона PropertyNameChanged.

См. также

Основные понятия

Источники данных, поддерживаемые Windows Forms

Связывание данных и Windows Forms

Ссылки

BindingSource

INotifyPropertyChanged

BindingList<T>

Другие ресурсы

Связывание элементов управления Windows Forms с данными