vb.net – 如何将标题放在DataGridView的列中?

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

我有一个DataGridView,我试图将列标题放在中心位置,但结果是左边的偏心,就像一个缩进的问题.我在一个或两个网站上看到过这个问题的一些帖子,但从来没有一个解决方案.有什么想法吗?

以下是我目前使用的声明:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
您发布的代码在正确的轨道上:您需要设置DataGridView控件的ColumnHeadersDefaultCellStyle属性.

但是,您需要创建一个新的DataGridViewCellStyle类并将其分配给ColumnHeadersDefaultCellStyle属性.除非您已经为此属性分配了DataGridViewCellStyle类,否则不能修改Alignment属性.

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

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

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle

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

编辑:我刚刚注意到你在列中指出的轻微偏移 – 它确实在每个标题的右边创建了一些额外的填充.这不是一个bug.有一个更简单的解释.

像ListView一样,DataGridView支持按列排序.因此,在计算中心对齐时,每个列头都保留足够的空间来显示排序字形(通常是箭头).

如果要使列标题完全居中,则需要禁用排序.将列的SortMode属性设置为“NonSortable”.每当列文本为中心或右对齐时,这将防止为排序字形保留空格.

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...