DataGridViewButtonColumn




Собственно, предыдущий абзац о ячейке со ссылкой можно было бы просто скопировать и вставить сюда. Ибо функционально эти оба типа ячеек абсолютно идентичны – активная область, при щелчке по которой "что-то происходит". Данная ячейка небезуспешно пытается прикинуться "взрослой" кнопкой и даже честно отрисовывает моменты нажатия и отпускания. Схема работы та же, что у DataGridViewLinkColumn, но обрабатывать надо событие CellClick.

DataGridViewCheckBoxColumn

Тип объекта, по умолчанию ожидаемого ячейкой при установке нового значения через свойство Value: bool/ CheckState/ null.

Обладает возможностью редактирования, но, в отличие от DataGridViewTextBoxColumn не пользуется для редактирования каким-либо специальным control-ом. Ячейка данного типа всегда находится в фазе редактирования – DataGridView.IsCurrentCellInEditMode для неё всегда вернет true. С помощью свойства ThreeState для ячейки можно включить поддержку трехпозиционного режима (включено, выключено и не определено). По умолчанию же режим двухпозиционный. В трехпозиционном режиме недетерминированному состоянию соответствуют значения CheckState.Indeterminate, null или 2.

DataGridViewComboBoxColumn

Безусловно, самый сложный среди всех встроенных типов ячеек. Похож на DataGridViewTextBoxColumn тем, что имеет специальную фазу редактирования, при которой использует для редактирования control типа DataGridViewComboBoxEditingControl. Понятно, что в целом ячейка данного типа пытается "прикинуться" обычным комбобоксом. Это удается ей лишь отчасти, поскольку настоящий комбобокс может иметь текстовую часть для прямого ввода значения. Данная же ячейка работает строго в режиме ComboBoxStyle.DropDownList, то есть никакого прямого ввода, только выбор из списка. Подписавшись на событие DataGridView EditingControlShowing можно заставить редактирующий control показать-таки поле ввода текста напрямую (режим ComboBoxStyle.DropDown). Но это уже будет разновидность "лёгкого хакинга". С помощью свойства AutoComplete (тип bool) можно включить встроенную функциональность автозавершения вводимых значений.

Свойство DropDownWidth (тип int) установит ширину выпадающего списка, а свойство MaxDropDownItems того же типа ограничит количество одновременно показываемых записей (если записей больше, чем установлено этим свойством – выпадающий список будет с вертикальной полосой прокрутки). Но, наверно, самым важным свойством для данного типа ячеек, наряду с необсуждаемым по степени важности Value, является свойство Items, возвращающее коллекцию ObjectCollection, в которую и заносятся элементы выпадающего списка. Это позволяет заполнить список вручную.

Примечательно, что DataGridViewComboBoxCell поддерживает собственную привязку к источнику, независимую от содержащего её grid-а! Для этого у нее имеются свойства DataSource, DisplayMember и ValueMember. Кстати, в последнем случае свойство Value возвращает не то, что видно пользователю (т.е. не DisplayMember выбранного элемента), а ValueMember этого элемента.

DataGridViewImageColumn

Еще одна не редактируемая ячейка, позволяющая показывать картинки и пиктограммы. Ячейка этого типа предоставляет ряд дополнительных свойств, среди которых можно выделить ImageLayout (принимает одно из значений перечисления DataGridViewImageCellLayout) определяющее, как будет вписываться в ячейку изображение, не совпадающее по размерам с прямоугольником ячейки. Отмечу также ValueIsIcon (тип bool). Его можно выставить в true, если нужно отрисовать объект типа Icon, а не типа Image.

Благодаря тому, что с типом Image ассоциирован TypeConvertor ImageConvertor, в качестве значения ячеек этого типа можно использовать массив байт, содержащий сериализованное изображение. Это обстоятельство особенно ценно при привязке колонки подобного типа к источнику данных БД, так как последний обычно хранит изображения именно как массив байт.

Если нужно изменить список элементов выпадающего списка, есть два пути. Первый позволяет изменить список элементов всех ячеек некоторой колонки, а второй – настроить списки отдельных ячеек. В первом случае нужно получить колонку, требующую настройки, привести ее к DataGridViewComboBoxColumn и через свойство Items добавить элементы:

private void button3_Click(object sender, EventArgs e){ ((DataGridViewComboBoxColumn)_grid.Columns[0]).Items.AddRange(new string[] { "One", "Two", "Three", "Four" });}

Во втором случае нужно получить ячейку, подлежащую настройке, и привести ее к DataGridViewComboBoxCell, и точно так же настроить список.

private void button4_Click(object sender, EventArgs e){ DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)_grid.Rows[2].Cells[0]; cell.Items.Clear(); cell.Items.AddRange(new string[] { "ABC", "KLM", "XYZ" });}

Обратите внимание, что сначала нужно настраиваемую ячейку "освободить" от доставшегося ей по шаблону списка. Если этого не сделать, то новый список "сольётся" со старым будет состоять из семи элементов:


Рисунок 18.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-09-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: