Winforms中的右对齐DataGridView列标题

Winforms中的右对齐DataGridView列标题,winforms,datagridview,Winforms,Datagridview,我在DataGridView winforms控件中有一个列名“Quote Price”。我可以右对齐没有空格的列,例如“Unit”,但是我不能右对齐列标题和名为“Quote Price”的列名称。我尝试使用右上角、中右和右下角,但没有成功 SelectedAdditionalCost.Columns["Quote Price"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; // Doesn't w

我在DataGridView winforms控件中有一个列名“Quote Price”。我可以右对齐没有空格的列,例如“Unit”,但是我不能右对齐列标题和名为“Quote Price”的列名称。我尝试使用右上角、中右和右下角,但没有成功

SelectedAdditionalCost.Columns["Quote Price"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight; // Doesn't want to right align
SelectedAdditionalCost.Columns["Quote Price"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; // column contents No worries, right aligns.

我确信我在做一些非常愚蠢的事情,但是,我不能让它工作。

当我写下面的内容时,我意识到可能是问题所在-一个
DataGridView
列的名称不能包含空格-您是通过标题文本而不是列名引用列集合。尽管如此,当我尝试像您在示例中那样运行代码时,我遇到了一个运行时错误(null引用异常)

不管怎样,撇开这一点不谈:

您的代码非常适合我,我在一个datagridview测试项目(在构造函数中)中实现了以下内容,标题文本右对齐:

dataGridView.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
因为您提到了标题文本上的空格,所以第2列的文本中包含了空格

我看到的一件事是,当排序图示符阻止标题文本与单元格边距完全对齐时,标题文本可能会显示为不正确对齐

看看这是否有什么不同:

dataGridView.Columns[1].SortMode = DataGridViewColumnSortMode.NotSortable;

您可以像这样对齐所有列标题,而不是逐个对齐

//MiddleRight Alignment for DataGridView Column Headers
DataGridViewCellStyle colHeaderStyle = new DataGridViewCellStyle();
colHeaderStyle.Alignment= DataGridViewContentAlignment.MiddleRight;
..... some other styles (like color, font etc) .........
dataGridView_custom.ColumnHeadersDefaultCellStyle = colHeaderStyle;
参考取自a,测试为ok