Определение специальных типов ячеек и столбцов

однако всегда встречаются особые сценарии

Имея DataGridView, Вы обладаете возможностями представления сложных данных, далеко опережающими возможности DataGrid Благодаря встроенным типам столбцов, которые поддерживаются уже в готовом виде. Однако всегда встречаются особые сценарии, в которых вам понадобится поддерживать отображение столбцов специального вида. К счастью, другим важНыМ преимуществом DataGridView Является простота подключения специальных типов столбцов и ячеек. Если вы хотите настроить только процесс рисования ячейки, но не собираетесь вводить каких-либо новых свойств или средств управления на уровне столбца, у вас есть возможность воспользоваться событиями, а не создавать для этого новые типы столбцов и ячеек. Вы можете обрабатывать событие CellPainting И рисовать прямо в ячейке, при этом можно осуществить многое из того, что вам потребуется, при помощи встроенных типов ячеек и некоторого кода рисования. Но если вы хотите подключать к сетке свои собственные утилизируемые типы столбцов или ячеек с той же легкостью, как используются встроенные типы, то можете создать свои собственные производные классы столбцов и ячеек. Модель, которой вы следуете при подключении специальных типов столбцов, совпадает с той, что вы уже видели при использовании встроенных типов: вам нужно создать тип столбца и соответствующий тип ячеек, которые будут содержаться в столбце. Это делается путем наследования от базовых классов DataGridViewColumn И DataGridViewCell, Непосредственно или косвенно, через один из встроенных классов. Лучше всего объяснить это в подробностях на примере. Допустим, я хочу реализовать специальный тип столбца, позволяющий отображать состояние элементов, представляемых строками сетки. Мне хотелось бы устанавливать состояние, используя перечислимые значения, а ячейка будет графически индицировать состояние в зависимости от установленного для ячейки перечислимого значения. Для этого я определяю классы statusCo-Lumn И StatusCell .

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

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