Все про datagridview

Цей тип колонок не генерується автоматично при зв'язуванні даних, такі колонки доводиться створювати вручну і вручну ж прив'язувати до даних.

Для обробки клацання по посиланню потрібно створити і підключити обробник події CellContentClick grid-а. У цій події передаються тільки координати осередку, так що самі дані доведеться добувати вручну.

DataGridViewButtonColumn

Власне, попередній абзац про осередок з посиланням можна було б просто скопіювати і вставити сюди. Бо функціонально ці обидва типи осередків абсолютно ідентичні - активна область, при натисканні на яку "щось відбувається". Ця група небезуспішно намагається прикинутися "дорослої" кнопкою і навіть чесно отрісовиваєт моменти натискання і відпускання. Схема роботи та ж, що у DataGridViewLinkColumn. але обробляти треба подія CellClick.

Тип об'єкта, за замовчуванням очікуваного осередком при установці нового значення через властивість 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. в якості значення осередків цього типу можна використовувати масив байт, що містить серіалізовані зображення. Ця обставина особливо цінно при прив'язці колонки подібного типу до джерела даних БД, так як останній зазвичай зберігає зображення саме як масив байт.

Схожі статті