Datagridview ColumnHeader 与单元格数据对齐

Datagridview ColumnHeader alignment with cell data

带数字符号的 header 列的填充量大得离谱。

我试过摆弄 ColumnHeaderDefaultCellStyle 但无济于事。有什么想法吗?

好的,如果我理解问题的当前形式,它是这样的:

顶部图像不佳 - header 文本与单元格文本不对齐。
底部图片好:文字排成一行

首先,header 单元格具有不同的填充,以便为 sizer 句柄和在某些情况下的 3D 效果留出空间。要使 "title" 单元格与 header 对齐,请向左添加一点 Padding。为了让我的 "Active" 列对齐,我使用了:

dgv1.Columns(3).DefaultCellStyle.Padding = New Padding(2, 0, 0, 0)

对于右对齐的 header 文本,您可能不太走运,这说明了原因:

header 单元格的实际文本区域被限制为排序字形保留空间。如果他们不这样做,文本会在列排序时跳来跳去。如果您不打算让用户对数据进行排序,您可以将列设置为不可排序,并且不会为字形保留空间:

dgv1.DataSource = dtSimple
dgv1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
dgv1.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
dgv1.Columns(0).SortMode = DataGridViewColumnSortMode.NotSortable

dgv1.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
dgv1.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
dgv1.Columns(1).SortMode = DataGridViewColumnSortMode.NotSortable

dgv1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
dgv1.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
dgv1.Columns(2).SortMode = DataGridViewColumnSortMode.NotSortable