Как я могу центрировать заголовок в столбце DataGridView?

У меня странная проблема, и это, вероятно, простое исправление, но после долгих исследований я не могу найти решение.

У меня есть DataGridView, на котором я пытаюсь центрировать заголовки столбцов, но результатом является левое смещение в центрировании - почти как проблема с отступом. Я видел несколько сообщений по этой проблеме на сайте или два, но никогда не был решением. Есть предположения?

Здесь выражение, которое я сейчас пытаюсь использовать:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

Ответы

Ответ 1

Код, который вы опубликовали, находится на правильном пути: вам нужно установить свойство ColumnHeadersDefaultCellStyle вашего элемента управления DataGridView.

Однако вам нужно создать новый класс DataGridViewCellStyle и присвоить его свойству ColumnHeadersDefaultCellStyle.. Вы не можете изменить свойство Alignment, как показано в примере кода вашего кода, если у вас нет присваивает этому свойству класс DataGridViewCellStyle.

Итак, например, следующий код обеспечивает идеально центрированные заголовки столбцов в пустом проекте:

Dim dgvColumnHeaderStyle As New DataGridViewCellStyle()
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle

  DataGridView with centered column headings


В будущем вам может быть легче сделать эти вещи от Дизайнера. Если вам все еще нужно сделать это через код, вы можете проверить созданный файл *.Designer.vb, чтобы увидеть, как это было сделано.


РЕДАКТИРОВАТЬ: Я только сейчас заметил небольшое смещение, о котором вы говорите в столбцах, - оно действительно создает немного дополнительного дополнения справа от каждого заголовка. Впрочем, это не ошибка. Там гораздо проще объяснить.

Как и ListView, DataGridView поддерживает сортировку по столбцам. Поэтому каждый столбец столбца резервирует достаточно места для отображения глифа сортировки (обычно стрелки) при вычислении выравнивания центра.

Если вы хотите, чтобы заголовки столбцов были полностью центрированы, вам нужно отключить сортировку. Установите для свойства SortMode для столбца значение "NonSortable". Это должно препятствовать зарезервированию пространства для глифа сортировки всякий раз, когда текст столбца выравнивается по центру или по правому краю.

Ответ 2

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

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter