Определение специального типа столбца

если бы вы собирались использовать

Итак, у нас есть специальный класс ячейки, который можно использовать в сетке, но желательно еще иметь специальный класс столбца, который содержал бы ячейки StatusCell И мог использоваться для организации сетки и привязки данных. Если бы вы собирались использовать специальный тип ячейки исключительно программным способом, можно было бы просто конструировать экземпляр базового класса DataGridViewColumn, Передав конструктору класса экземпляр StatusCell, Который будет уста-новлен в качестве шаблона CellTempiate Для столбца. Однако такой подход не позволит использовать для спецификации привязанного или несвязанного столбца ячеек StatusCells Редакторы столбцов Visual Studio, показанные на рис. 6.4 и 6.5. Для поддержки этого нужно реализовать специальный тип столбца, который будет распознаваться конструктором. Раз вы реализуете свой собственный тип столбца, в нем можно предусмотреть способ задания того, каким по умолчанию должно быть значение Statuslmage Для добавляемых новых строк. Реализация класса StatusColumn Показана в листинге 6.5.

Из реализации StatusColumn Можно видеть, что прежде всего нужно произвести свой класс от DataGridViewColumn. Затем вы реализуете конструктор по умолчанию, который передает экземпляр вашего специального класса ячейки конструктору базового класса. Тем самым в свойстве CellTempiate Базового класса устанавливается данный тип ячейки, который становится типом ячеек для любых строк, добавляемых к сетке, содержащей ваш тип столбца. Далее класс определяет открытое свойство с именем DefaultStatus. Оно позволяет любому клиенту, использующему этот тип столбца, задать, какое из трех значений Statuslmage Будет отображаться по умолчанию, если никакого значения явным образом не задано, ни через привязку данных, ни посредством программной установки значения ячейки. Установщик для этого свойства модифицирует поле, которое отслеживает текущее значение по умолчанию. К свойству DefaultStatus Обращается метод StatusCell. GetFormattedValue, Описанный выше.

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

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