您发布的代码在正确的轨道上:您需要设置控件的ColumnHeadersDefaultCellStyle
属性。DataGridView
但是,您需要创建一个新DataGridViewCellStyle
类并将其分配给属性ColumnHeadersDefaultCellStyle
。除非您为该属性分配了一个类,否则您无法修改该Alignment
属性,如您的代码示例所示。DataGridViewCellStyle
因此,例如,以下代码在空白项目中实现了完美居中的列标题:
Dim dgvColumnHeaderStyle As New DataGridViewCellStyle()
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle
将来,您可能会发现从 Designer 中执行这些类型的事情会更容易。如果您仍然需要通过代码自己完成,您可以检查*.Designer.vb
创建的文件以了解它是如何完成的。
编辑:我刚才注意到您在列中提到的轻微偏移 - 它确实在每个标题的右侧创建了一些额外的填充。不过,这不是错误。有一个更简单的解释。
与 a 一样ListView
,DataGridView
支持按列排序。因此,在计算中心对齐时,每个列标题都会保留足够的空间来显示排序字形(通常是箭头)。
如果您希望列标题完全居中,则需要禁用排序。将SortMode
列的属性设置为“NonSortable”。这应该防止在列文本居中或右对齐时为排序字形保留空间。