如何将标题置于DataGridView的列中?

时间:2010-12-29 01:21:56

标签: vb.net winforms datagridview datagridviewcolumn

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

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

以下是我目前正在尝试使用的声明:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

2 个答案:

答案 0 :(得分:20)

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

但是,您需要创建一个新的DataGridViewCellStyle类,并将 分配给ColumnHeadersDefaultCellStyle属性。您无法修改{ {1}}属性作为您的代码示例显示,除非您已为此属性分配了Alignment类。

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

DataGridViewCellStyle

DataGridView with centered column headings


将来,您可能会发现从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