2010-12-29 1 views
11

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

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

Вот заявление я в настоящее время пытаюсь использовать:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

ответ

21

кода Вы разместили на правильном пути: вам нужно установить 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, который создан, чтобы увидеть, как это было сделано.


EDIT: Я только сейчас заметил, что небольшое смещение вы имеете в виду в колоннах, она действительно создает небольшое дополнительное заполнение справа от заголовка. Однако это не ошибка. Существует гораздо более простое объяснение. (ListView) DataGridView 0 0 Поэтому каждый столбец столбца резервирует достаточное пространство для отображения глифа сортировки (обычно стрелки) при вычислении выравнивания центра.

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

+2

Спасибо за быстрый ответ. Однако я заметил, что вы получаете то же самое левое предвзятое отношение - каждый из заголовков не совсем центрирован. Я читаю некоторую информацию, которая, как представляется, указывает на ошибку, которая требует, чтобы каждый заголовок заполнялся несколькими пустым пространством, но, очевидно, он варьируется в зависимости от длины заголовка столбца. Кажется, что до текста будет добавлено около 2,5%. Ясно, что это не похоже на решение. Я пробовал это несколько способов и продолжаю получать то же самое. Странно, да? – Keith

+0

BTW, 2.5% от общей ширины столбца ... извините за любую путаницу, вызванную упущением. – Keith

+0

@ Keith: Я только сейчас заметил, о чем вы говорите. Это смешно, я никогда не обращал на это внимания. И все мои друзья зовут меня OCD - это их покажет! Я обновил свой ответ с некоторым новым пониманием. –

1

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

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