Ответ 1
Код, который вы опубликовали, находится на правильном пути: вам нужно установить свойство ColumnHeadersDefaultCellStyle
вашего элемента управления DataGridView
.
Однако вам нужно создать новый класс DataGridViewCellStyle
и присвоить его свойству ColumnHeadersDefaultCellStyle
.. Вы не можете изменить свойство Alignment
, как показано в примере кода вашего кода, если у вас нет присваивает этому свойству класс DataGridViewCellStyle
.
Итак, например, следующий код обеспечивает идеально центрированные заголовки столбцов в пустом проекте:
Dim dgvColumnHeaderStyle As New DataGridViewCellStyle()
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle
В будущем вам может быть легче сделать эти вещи от Дизайнера. Если вам все еще нужно сделать это через код, вы можете проверить созданный файл *.Designer.vb
, чтобы увидеть, как это было сделано.
РЕДАКТИРОВАТЬ: Я только сейчас заметил небольшое смещение, о котором вы говорите в столбцах, - оно действительно создает немного дополнительного дополнения справа от каждого заголовка. Впрочем, это не ошибка. Там гораздо проще объяснить.
Как и ListView
, DataGridView
поддерживает сортировку по столбцам. Поэтому каждый столбец столбца резервирует достаточно места для отображения глифа сортировки (обычно стрелки) при вычислении выравнивания центра.
Если вы хотите, чтобы заголовки столбцов были полностью центрированы, вам нужно отключить сортировку. Установите для свойства SortMode
для столбца значение "NonSortable". Это должно препятствовать зарезервированию пространства для глифа сортировки всякий раз, когда текст столбца выравнивается по центру или по правому краю.