Архитектура элементов управления DataGridView (Windows Forms)

Элемент управления DataGridView и связанные с ним классы предназначены для гибкой расширяемой системы для отображения и редактирования табличных данных. Эти классы содержатся в пространстве имен System.Windows.Forms, и все они именуются с префиксом DataGridView.

Элементы архитектуры

Первичные вспомогательные классы DataGridView являются производными от DataGridViewElement. Следующая объектная модель демонстрирует иерархию наследования DataGridViewElement.

Diagram that shows the DataGridViewElement Object Model hierarchy.

Класс DataGridViewElement предоставляет ссылку на родительский элемент управления DataGridView и имеет свойство State, которое содержит значение, представляющее сочетание значений из перечисления DataGridViewElementStates.

В следующих разделах более подробно описаны вспомогательные классы DataGridView.

DataGridViewElementStates

Перечисление DataGridViewElementStates имеет такие значения:

Значения этого перечисления можно объединить с побитовыми логическими операторами, поэтому свойство State может одновременно выразить несколько состояний. Например, DataGridViewElement может быть одновременно Frozen, Selected и Visible.

Ячейки и зоны

Элемент управления DataGridView состоит из двух основных видов объектов: ячеек и зон. Все ячейки являются производными от базового класса DataGridViewCell. Два типа зон, DataGridViewColumn и DataGridViewRow,оба являются производными от базового класса DataGridViewBand.

Элемент управления DataGridView взаимодействует с несколькими классами, но наиболее часто встречаются DataGridViewCell, DataGridViewColumn и DataGridViewRow.

DataGridViewCell

Ячейка является основной единицей взаимодействия для DataGridView. Отображение сосредоточено на ячейках, а запись данных часто выполняется с помощью ячеек. Доступ к ячейкам можно получить с помощью коллекции Cells класса DataGridViewRow, получить доступ к выбранным ячейкам можно с помощью коллекции SelectedCells элемента управления DataGridView. Следующая объектная модель демонстрирует использование иерархии наследования DataGridViewCell.

Diagram that shows the DataGridViewCell Object Model hierarchy.

Тип DataGridViewCell является абстрактным базовым классом, от которого являются производными все типы ячеек. DataGridViewCell и его производные типы не являются элементами управления Windows Forms, но некоторые содержат элементы управления Windows Forms. Любые функции редактирования, поддерживаемые ячейкой, обычно обрабатываются размещенным элементом управления.

Объекты DataGridViewCell не управляют своим внешним видом и рисованием так же, как элементы управления Windows Forms. Вместо этого DataGridView отвечает за внешний вид своих объектов DataGridViewCell. Вы можете значительно повлиять на внешний вид и поведение ячеек, взаимодействуя со свойствами и событиями элемента управления DataGridView. При наличии особых требований к настройкам, выходящим за рамки возможностей элемента управления DataGridView, можно реализовать собственный класс, производный от DataGridViewCell или одного из его дочерних классов.

В следующем списке показаны классы, производные от DataGridViewCell:

DataGridViewColumn

Схема присоединенного хранилища данных элемента управления DataGridView указывается в столбцах элемента управления DataGridView. Доступ к столбцам элемента управления DataGridView можно получить с помощью коллекции Columns. Доступ к выбранным столбцам можно получить с помощью коллекции SelectedColumns. Следующая объектная модель демонстрирует использование иерархии наследования DataGridViewColumn.

Diagram that shows the DataGridViewColumn Object Model hierarchy.

Некоторые ключевые типы ячеек имеют соответствующие типы столбцов. Объект является производным от базового класса DataGridViewColumn.

В следующем списке показаны классы, производные от DataGridViewColumn:

Элементы управления редактированием DataGridView

Ячейки, поддерживающие расширенные функции редактирования, обычно используют размещенный элемент управления, производный от элемента управления Windows Forms. Эти элементы управления также реализуют интерфейс IDataGridViewEditingControl. Следующая объектная модель иллюстрирует использование этих элементов управления.

Diagram showing the DataGridView Editing Control Object Model hierarchy.

Следующие элементы управления редактирования предоставляются вместе с элементом управления DataGridView:

Сведения о создании собственных элементов управления редактированием см. в статьеПрактическое руководство. Размещение элементов управления в ячейках элемента управления DataGridView в Windows Forms.

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

Тип ячейки Размещенный элемент управления Тип столбца
DataGridViewButtonCell Недоступно DataGridViewButtonColumn
DataGridViewCheckBoxCell н/д DataGridViewCheckBoxColumn
DataGridViewComboBoxCell DataGridViewComboBoxEditingControl DataGridViewComboBoxColumn
DataGridViewImageCell н/д DataGridViewImageColumn
DataGridViewLinkCell Недоступно DataGridViewLinkColumn
DataGridViewTextBoxCell DataGridViewTextBoxEditingControl DataGridViewTextBoxColumn

DataGridViewRow

Класс DataGridViewRow отображает поля данных записи из хранилища данных, к которому присоединен элемент управления DataGridView. Доступ к строкам элемента управления DataGridView можно получить с помощью коллекции Rows. Доступ к выбранным строкам можно получить с помощью коллекции SelectedRows. Следующая объектная модель демонстрирует использование иерархии наследования DataGridViewRow.

Diagram that shows the DataGridViewRow Object Model hierarchy.

Вы можете наследовать собственные типы от класса DataGridViewRow, хотя это обычно не требуется. Элемент управления DataGridView имеет несколько событий и свойств, связанных со строками, для настройки поведения его объектов DataGridViewRow.

Если включить свойство DataGridView элемента управления AllowUserToAddRows, то в качестве последней строки появится специальная строка для добавления новых строк. Эта строка является частью коллекции Rows, но она имеет специальные функциональные возможности, которые могут потребовать вашего внимания. Дополнительные сведения см. в статье Использование строки элемента управления DataGridView, предназначенной для ввода новых данных, в Windows Forms.

См. также