12

我有一个奇怪的问题,它可能是一个简单的解决方案,但经过大量研究,我似乎无法找到解决方案。

我有一个DataGridView我试图将列标题居中的结果,但结果是居中出现了左偏——几乎就像一个缩进问题。我在一两个网站上看到过一些关于这个问题的帖子,但从来没有一个解决方案。有什么想法吗?

这是我目前正在尝试使用的语句:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
4

2 回答 2

22

您发布的代码在正确的轨道上:您需要设置控件的ColumnHeadersDefaultCellStyle属性。DataGridView

但是,您需要创建一个新DataGridViewCellStyle类并将其分配给属性ColumnHeadersDefaultCellStyle除非您为该属性分配了一个类,否则您无法修改该Alignment属性,如您的代码示例所示。DataGridViewCellStyle

因此,例如,以下代码在空白项目中实现了完美居中的列标题:

Dim dgvColumnHeaderStyle As New DataGridViewCellStyle()
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle

 具有居中列标题的 DataGridView


将来,您可能会发现从 Designer 中执行这些类型的事情会更容易。如果您仍然需要通过代码自己完成,您可以检查*.Designer.vb创建的文件以了解它是如何完成的。


编辑:我刚才注意到您在列中提到的轻微偏移 - 它确实在每个标题的右侧创建了一些额外的填充。不过,这不是错误。有一个更简单的解释。

与 a 一样ListViewDataGridView支持按列排序。因此,在计算中心对齐时,每个列标题都会保留足够的空间来显示排序字形(通常是箭头)。

如果您希望列标题完全居中,则需要禁用排序。SortMode列的属性设置为“NonSortable”。这应该防止在列文本居中或右对齐时为排序字​​形保留空间。

于 2010-12-29T01:41:00.590 回答
1

如果您想居中或使用列标题文本的任何其他对齐方式,您可以使用它

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
于 2016-06-04T05:02:06.087 回答