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

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

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

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

Схема, показывающая иерархию объектной модели DataGridViewElement.

Класс 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 наследования.

Схема, показывающая иерархию объектной модели DataGridViewCell.

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

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

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

DataGridViewColumn

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

Схема, показывающая иерархию объектной модели DataGridViewColumn.

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

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

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

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

Схема, на которой показана иерархия объектной модели элемента управления редактированием DataGridView.

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

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

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

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

DataGridViewRow

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

Схема, показывающая иерархию объектной модели DataGridViewRow.

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

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

См. также