我有一个奇怪的问题,这可能是一个简单的修复,但经过大量研究,我似乎无法找到解决方案。
我有一个DataGridView
,我试图将列标题居中,但结果是居中的左偏 - 几乎就像一个缩进问题。我在一两个网站上看过一些关于这个问题的帖子,但从来没有一个解决方案。有什么想法吗?
以下是我目前正在尝试使用的声明:
DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
答案 0 :(得分:20)
您发布的代码位于正确的轨道上:您需要设置ColumnHeadersDefaultCellStyle
控件的DataGridView
属性。
但是,您需要创建一个新的DataGridViewCellStyle
类,并将 分配给ColumnHeadersDefaultCellStyle
属性。您无法修改{ {1}}属性作为您的代码示例显示,除非您已为此属性分配了Alignment
类。
因此,例如,以下代码在空白项目中实现了完美居中的列标题:
DataGridViewCellStyle
将来,您可能会发现从Designer中更容易完成这些类型的事情。如果您仍需要通过代码自行完成,可以查看创建的Dim dgvColumnHeaderStyle As New DataGridViewCellStyle()
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle
文件,了解它是如何完成的。
编辑:我刚刚注意到你在列中引用的轻微偏移 - 它确实在每个标题的右侧创建了一些额外的填充。不过,这不是一个错误。有一个更简单的解释。
与*.Designer.vb
类似,ListView
支持按列排序。因此,在计算中心对齐时,每个列标题都会保留足够的空间来显示排序字形(通常是箭头)。
如果您希望列标题完全居中,则需要禁用排序。将列的DataGridView
属性设置为“NonSortable” ”。这可以防止在列文本居中或右对齐时为排序字形保留空间。
答案 1 :(得分:1)
如果要居中或使用列标题文本的任何其他对齐样式,可以使用此
dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter