Архитектура элементов управления DataGridView (Windows Forms)
Элемент управления DataGridView и связанные с ним классы предназначены для гибкой расширяемой системы для отображения и редактирования табличных данных. Эти классы содержатся в пространстве имен System.Windows.Forms, и все они именуются с префиксом DataGridView.
Элементы архитектуры
Первичные вспомогательные классы DataGridView являются производными от 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 и его производные типы не являются элементами управления Windows Forms, но некоторые содержат элементы управления Windows Forms. Любые функции редактирования, поддерживаемые ячейкой, обычно обрабатываются размещенным элементом управления.
Объекты DataGridViewCell не управляют своим внешним видом и рисованием так же, как элементы управления Windows Forms. Вместо этого DataGridView отвечает за внешний вид своих объектов DataGridViewCell. Вы можете значительно повлиять на внешний вид и поведение ячеек, взаимодействуя со свойствами и событиями элемента управления DataGridView. При наличии особых требований к настройкам, выходящим за рамки возможностей элемента управления DataGridView, можно реализовать собственный класс, производный от DataGridViewCell или одного из его дочерних классов.
В следующем списке показаны классы, производные от DataGridViewCell:
Настраиваемые типы ячеек
DataGridViewColumn
Схема присоединенного хранилища данных элемента управления DataGridView указывается в столбцах элемента управления DataGridView. Доступ к столбцам элемента управления DataGridView можно получить с помощью коллекции Columns. Доступ к выбранным столбцам можно получить с помощью коллекции SelectedColumns. Следующая объектная модель демонстрирует использование иерархии наследования DataGridViewColumn.
Некоторые ключевые типы ячеек имеют соответствующие типы столбцов. Объект является производным от базового класса DataGridViewColumn.
В следующем списке показаны классы, производные от DataGridViewColumn:
Настраиваемые типы столбцов
Элементы управления редактированием DataGridView
Ячейки, поддерживающие расширенные функции редактирования, обычно используют размещенный элемент управления, производный от элемента управления Windows Forms. Эти элементы управления также реализуют интерфейс IDataGridViewEditingControl. Следующая объектная модель иллюстрирует использование этих элементов управления.
Следующие элементы управления редактирования предоставляются вместе с элементом управления 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.
Вы можете наследовать собственные типы от класса DataGridViewRow, хотя это обычно не требуется. Элемент управления DataGridView имеет несколько событий и свойств, связанных со строками, для настройки поведения его объектов DataGridViewRow.
Если включить свойство DataGridView элемента управления AllowUserToAddRows, то в качестве последней строки появится специальная строка для добавления новых строк. Эта строка является частью коллекции Rows, но она имеет специальные функциональные возможности, которые могут потребовать вашего внимания. Дополнительные сведения см. в статье Использование строки элемента управления DataGridView, предназначенной для ввода новых данных, в Windows Forms.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по