Как я могу центрировать заголовок в столбце на DataGridView? - PullRequest
11 голосов
/ 29 декабря 2010

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

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

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

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

Ответы [ 2 ]

20 голосов
/ 29 декабря 2010

Код, который вы разместили, находится на правильном пути: вам нужно установить свойство 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».Это должно препятствовать тому, чтобы пространство было зарезервировано для глифа сортировки всякий раз, когда текст столбца находится по центру или выровнен по правому краю.

1 голос
/ 04 июня 2016

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

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