Категории
Войти
Поиск
Реклама
Полезное:
Применяет для социологических опросов населения
Центр "Олимп" применяет для социологических опросов населения набор современных методик.
olimp-mrc.ru
Стоматология клиники
san-marco.ua
Новые статьи
Опечатка?
Выделите текст и нажмите Shift+Enter.
И мы в ближайшее время ее исправим!
Счетчики
| Перехват процесса конструирования |
|
В качестве следующего шага давайте перехватим процесс добавления к коллекции новых объектов Customer, когда он инициируется механизмом привязки данных. Когда вы добавляете новую строку к DataGridView или вызываете AddNew для BindingSource, вызывается метод AddNew из реализации интерфейса IBindingList вашего класса коллекции. Реализация AddNew по умолчанию в базовом классе BindingList<T> создает новый экземпляр вашего объектного типа, используя его конструктор по умолчанию, помещает его в коллекцию и передает ссылку на новый объект обратно вызывающему. Можно взять в свои руки процесс конструирования и выполнить любую специальную инициализацию. Это может потребоваться, если объекты, которые будут отправлены в коллекцию, не имеют конструктора по умолчанию. Например, вы хотите инициализировать Customerld объекта значением, на единицу большим, чем текущий наибольший Customerld в коллекции. Объявляет конструктор по умолчанию и параметризованный конструктор, которые делегируют вызов конструкторам базового класса. Это делается для того, чтобы вы могли инициализировать экземпляр класса CustomerCollection существующим List<Customer>, моделируя то, что уже умеет делать базовый класс. Определяет метод AddNewCore, который выполняет следующее: - Конструирует экземпляр объекта Customer. - Вызывает вспомогательный метод для определения максимального значения Customerld путем итерации по коллекции. ных). Кроме того, вы хотите установить в CustomerName подсказку «<Enter Customer Name>». Для этого вам нужно будет переопределить метод AddNewCore базового класса. В классе BindingList<T> методы и свойства IBindingList делаются невиртуальными, а его реализация этих элементов вызывает виртуальные элементы, которые вы можете переопределить в своем производном классе. Эти виртуальные элементы по соглашению имеют имена, соответствующие именам элементов базового класса, с добавлением Core, например, AddNewCore, ApplySortCore и IsSortedCore. Вот реализация AddNewCore для класса CustomerCollection: - Использует значение, возвращаемое вспомогательным методом, для установки Customerld нового объекта значением на единицу большим, чем это максимальное значение. - Устанавливает в качестве значения CustomerName подсказку "<Enter Customer Name>". - Добавляет объект заказчика в коллекцию. - Возвращает новый объект Customer как объектную ссылку, которая будет передана обратно вызывающему метода AddNew базового класса. Определяет вспомогательный метод FindMaxld, вызываемый AddNewCore.
Newer news items:
Older news items:
|
