右对齐Winforms中的DataGridView列标题

时间:2009-07-06 07:30:54

标签: winforms datagridview

我在DataGridView winforms控件中有一个名为“Quote Price”的列。我可以正确对齐一个没有空格的列,例如“Unit”howerver我无法将列标题与名为“Quote Price”的列名称对齐。我试图使用TopRight,MiddleRight和bottomRight但没有成功。

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.

我确信我正在做一些非常愚蠢的事情,但是,我无法做到这一点。

2 个答案:

答案 0 :(得分:25)

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

无论如何,除此之外:

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

dataGridView.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

因为您在标题文本中提到了空格,所以第2列在其文本中包含了一个空格。

我所看到的一件事是,当排序字形阻止它完全对齐单元格边距时,标题文本可能看起来不对齐。

看看这是否有所不同:

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

答案 1 :(得分:1)

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

//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;

VB answer获取的参考文献,测试为ok。