MyTetra Share
Делитесь знаниями!
Стили ячеек элемента управления DataGridView в Windows Forms
Время создания: 08.04.2018 14:18
Текстовые метки: DataGridView
Раздел: VB - Формы - DataGridView

Стили ячеек элемента управления DataGridView в Windows Forms Каждая ячейка в DataGridView элемент управления может иметь свой собственный стиль, включая формат текста, цвет фона, цвет и шрифт. Как правило, тем не менее, несколько ячеек обладают одинаковым стилем.

Группы ячеек с одинаковым стилем могут включать все ячейки в пределах определенного строк или столбцов, все ячейки с определенными значениями или все ячейки в элементе управления. Поскольку эти группы перекрываются, каждая ячейка может получать данные своего стиля из более чем в одном месте. Например, может потребоваться каждая ячейка DataGridView использовать одинаковый шрифт, но только в столбцах для использования формат денежной единицы и только валюты ячейки с отрицательные числа красным основной цвет элемента управления.

Класс DataGridViewCellStyle

DataGridViewCellStyle Класс содержит следующие свойства, относящиеся к стилю:

Этот класс также содержит следующие свойства, связанные с форматированием:

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

С помощью объектов DataGridViewCellStyle

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

Можно избежать ненужного дублирования информации о стилях, предоставив DataGridViewCellStyle объектов между несколькими DataGridView элементов. Поскольку стили элемента управления, столбца и фильтра строк уровней вниз до каждого уровня на уровне ячейки, можно также избежать дублирования стилей, задав только те свойства стилей на каждом уровне, которые отличаются от более высоких уровнях. Это описывается более подробно в следующем разделе наследования стиля.

В следующей таблице перечислены основные свойства, получить или задать DataGridViewCellStyle объектов.

Свойство.

Классы

Описание:

DefaultCellStyle

DataGridView, DataGridViewColumn, DataGridViewRowи производные классы

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

RowsDefaultCellStyle

DataGridView

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

AlternatingRowsDefaultCellStyle

DataGridView

Возвращает или задает стили ячеек по умолчанию, используемые во чередующихся строк в элементе управления. Используется для создания эффекта бухгалтерской книги.

RowHeadersDefaultCellStyle

DataGridView

Возвращает или задает стили ячеек по умолчанию, используемые в заголовках строк элемента управления. Текущую тему переопределены, если визуальные стили включены.

ColumnHeadersDefaultCellStyle

DataGridView

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

Style

DataGridViewCellи производные классы

Возвращает или задает стили, заданные на уровне ячеек. Эти стили заменяют унаследованные от более высоких уровнях.

InheritedStyle

DataGridViewCell, DataGridViewRow, DataGridViewColumnи производные классы

Получает все стили, примененные в ячейку, строку или столбец, включая стили, унаследованные от более высокого уровня.

Как упоминалось выше, при получении значения свойства стиля автоматически создает новый DataGridViewCellStyle объекта, если свойство не было задано ранее. Во избежание без необходимости создания этих объектов, строк и столбцов классы имеют HasDefaultCellStyle свойство, которое можно проверить, чтобы определить, является ли DefaultCellStyle свойства. Аналогично, классы ячейки имеют HasStyle свойство, которое указывает ли Style свойства.

Каждое из свойств стиля имеет соответствующий PropertyName Changed события DataGridView элемента управления. Для строк, столбцов и свойства ячейки, имя события начинается с «Row«,»Column», или «Cell» (например, RowDefaultCellStyleChanged). Каждое из этих событий возникает, когда соответствующее свойство стиля с другим DataGridViewCellStyle объекта. Эти события не происходят при извлечении DataGridViewCellStyle объекта из свойства стиля и изменении значений его свойств. Чтобы реагировать на изменения в самих объектов стиля ячейки, обрабатывать CellStyleContentChanged событий.

Наследование стилей

Каждый DataGridViewCell получает его внешний вид из его InheritedStyle свойство. DataGridViewCellStyle Объект, возвращаемый этим свойством наследует значения от иерархии свойств типа DataGridViewCellStyle. Эти свойства перечислены ниже в порядке, в котором InheritedStyle для ячеек не заголовков получает свои значения.

  1. DataGridViewCell.Style
  2. DataGridViewRow.DefaultCellStyle
  3. DataGridView.AlternatingRowsDefaultCellStyle(только для ячеек в строках нечетных)
  4. DataGridView.RowsDefaultCellStyle
  5. DataGridViewColumn.DefaultCellStyle
  6. DataGridView.DefaultCellStyle

Для ячеек заголовков строк и столбцов InheritedStyle свойство заполняется значениями из следующего списка исходных свойств в определенном порядке.

  1. DataGridViewCell.Style
  2. DataGridView.ColumnHeadersDefaultCellStyle или DataGridView.RowHeadersDefaultCellStyle
  3. DataGridView.DefaultCellStyle

Этот процесс показан на следующей схеме.

Также можно получить доступ к стилям, унаследованным от определенных строк и столбцов. Столбец InheritedStyle свойство наследует значения от следующих свойств.

  1. DataGridViewColumn.DefaultCellStyle
  2. DataGridView.DefaultCellStyle

Строка InheritedStyle свойство наследует значения от следующих свойств.

  1. DataGridViewRow.DefaultCellStyle
  2. DataGridView.AlternatingRowsDefaultCellStyle(только для ячеек в строках нечетных)
  3. DataGridView.RowsDefaultCellStyle
  4. DataGridView.DefaultCellStyle

Для каждого свойства в DataGridViewCellStyle объект, возвращаемый InheritedStyle свойства, значение свойства извлекается из первого стиля ячейки в соответствующем списке, соответствующий свойству присвоено значение, отличное от DataGridViewCellStyle класса значения по умолчанию.

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

Свойство типаDataGridViewCellStyle

Пример ForeColor значение для полученного объекта

DataGridViewCell.Style

Color.Empty

DataGridViewRow.DefaultCellStyle

Color.Red

DataGridView.AlternatingRowsDefaultCellStyle

Color.Empty

DataGridView.RowsDefaultCellStyle

Color.Empty

DataGridViewColumn.DefaultCellStyle

Color.DarkBlue

DataGridView.DefaultCellStyle

Color.Black

В этом случае Color.Red значение из строки ячейки является первым действительным значением в списке. Это становится ForeColor значение свойства ячейки InheritedStyle.

На следующей схеме показана как разные DataGridViewCellStyle свойства могут наследовать значения из разных мест.

Используя преимущества наследования стиля, можно предоставить соответствующие стили для всего элемента управления без указания те же данные в нескольких местах.

Несмотря на то, что ячейки заголовка участвуют в наследовании стиля, как описано, объекты, возвращенные ColumnHeadersDefaultCellStyle и RowHeadersDefaultCellStyle свойства DataGridView управления имеют начальные значения, переопределяющие значения свойств объекта, возвращенного DefaultCellStyle свойство. Если необходимо, чтобы свойства, установленные для объекта, возвращаемого DefaultCellStyle свойства, применяемый к заголовкам строк и столбцов, необходимо задать соответствующие свойства объектов, возвращенных ColumnHeadersDefaultCellStyle и RowHeadersDefaultCellStyle указанного значения по умолчанию для DataGridViewCellStyle класса.

Примечание

Если включены визуальные стили, заголовки строк и столбцов (за исключением TopLeftHeaderCell) автоматически определяются текущей темы, заменяя все стили, указанные для этих свойств.

DataGridViewButtonColumn, DataGridViewImageColumn, И DataGridViewCheckBoxColumn типы также инициализируют некоторые значения объекта, возвращаемого в столбце DefaultCellStyle свойство. Дополнительные сведения см. в справочной документации для этих типов.

Динамическая установка стилей

Чтобы настроить стили ячеек с определенными значениями, Реализуйте обработчик DataGridView.CellFormatting событий. Обработчики для этого события получают аргумент DataGridViewCellFormattingEventArgs типа. Этот объект содержит свойства, позволяющие определить значение ячейки, подлежащего форматированию вместе с ее расположение в DataGridView элемента управления. Этот объект также содержит CellStyle свойство, которое инициализируется значение InheritedStyle свойства форматируемой ячейки. Можно изменить свойства стиля ячейки и указать сведения о стиле, подходящие для значения ячейки и расположение.

Примечание

RowPrePaint И RowPostPaint событий также получать DataGridViewCellStyle данных объектов событий, но в случае их это копия строки InheritedStyle свойство только для чтения в целях, и изменения не влияют на элементе управления.

Можно также динамически изменять стили отдельных ячеек в ответ на события, такие как DataGridView.CellMouseEnter и CellMouseLeave события. Например, в обработчике CellMouseEnter событий, можно сохранить текущее значение цвета фона ячеек (извлечь с помощью ячейки Style свойства), установите его в новый цвет, который будет выделяться ячейки, при наведении указателя мыши. В обработчике CellMouseLeave события, цвет фона можно будет восстановить исходное значение.

Примечание

Кэширование значений, хранящихся в ячейке Style свойства важно независимо от того, установлен ли значение определенного стиля. Если временно заменить параметр стиля, восстанавливая ее из копии в исходное состояние «не установлено» обеспечивает ячейки будет снова будет наследовать этот параметр стиля с более высокого уровня. Если вам нужно определить текущий стиль, действующий для ячейки независимо от того, наследуется ли стиль, использовать эту ячейку InheritedStyle свойство.

См. также

DataGridView
DataGridViewCellStyle
DataGridView.AlternatingRowsDefaultCellStyle
DataGridView.ColumnHeadersDefaultCellStyle
DataGridView.DefaultCellStyle
DataGridView.RowHeadersDefaultCellStyle
DataGridView.RowsDefaultCellStyle
DataGridViewBand.InheritedStyle
DataGridViewRow.InheritedStyle
DataGridViewColumn.InheritedStyle
DataGridViewBand.DefaultCellStyle
DataGridViewCell.InheritedStyle
DataGridViewCell.Style
DataGridView.CellFormatting
DataGridView.CellStyleContentChanged
DataGridView.RowPrePaint
DataGridView.RowPostPaint
Базовое форматирование и оформление элемента управления DataGridView в Windows Forms
Практическое руководство. Установка стилей ячейки по умолчанию для элемента управления DataGridView в Windows Forms
Форматирование данных в элементе управления DataGridView в Windows Forms

 
MyTetra Share v.0.53
Яндекс индекс цитирования