Перехват добавлений и удалений

вам нужно позаботиться также о

Для перехвата добавлений и удалений вам нужно переопределить еще некоторые методы базового класса BindingList<T>, Такие, как Insertltem, Removeltem И Clearltems, И обеспечить выполнение одних тех же изменений как в первичной, так и в несортированной коллекции. Вам нужно позаботиться также о транзакционных добавлениях к коллекции, поэтому потребуется переопределение EndNew И CancelNew, А также транзакционное удаление из несортированной коллекции. Как видите, все усложняется весьма быстро. Чтобы продемонстрировать базовые возможности сортировки, давайте не будем поддерживать добавление и удаление элементов, когда коллекция сортирована. Вам все равно потребуется сделать копию существующей коллекции перед применением сортировки и возвратиться к этой копии, когда сортировка отменяется, но вам не нужно будет беспокоиться о добавляемых или удаляемых элементах и о поддержке параллельной коллекции, когда коллекция сортирована. Как уже упоминалось, класс List<T> Имеет встроенную возможность сортировки, и вы можете воспользоваться ей для выполнения действительной сортировки. Класс производит сортировку, исходя из обобщенной реализации интерфейса Icomparer<T>, Которую вы передаете методу. Для реализации этого интерфейса вы создаете класс с методом Compare, Который сравнивает объекты типа т и возвращает целое, показывающее, равен ли первый объект второму, больше он или меньше второго объекта. Какой критерий вы используете для решения о том, какое значение возвращать, определяется вами и вашей реализацией интерфейса. Реализация в листинге 9.4 использует идеи, взятые из рубрики Майкла Вайнхардта «Wonders of Windows Forms» в «MSDN Online», которые сами восходят к более ранней статье Рокки Лотка. Я выбрал другую стратегию реализации и добавил возможность сортировки по нескольким свойствам, которая показана далее в обсуждении реализации интерфейса IBindingListView, но некоторые основные детали следующей реализации были взяты из серии статей Майкла «Custom Data Binding» в зимних выпусках 2004 года.

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

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