在Winforms中右对齐DataGridView列标题

16

我在一个DataGridView winforms控件中有一个名为“Quote Price”的列。我可以将没有空格的列(例如“Unit”)右对齐,但是我无法将名为“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个回答

29
当我在撰写以下内容时,意识到一个可能存在的问题——DataGridView列的名称不能包含空格——您正在通过标题文本引用列集合,而不是列名称。尽管,当我尝试运行类似于您示例中的代码时,会出现运行时错误(空引用异常)。
无论如何,除此之外:
您的代码对我来说效果完美,我在我的一个datagridview测试项目中实现了以下内容(在构造函数中),标题文本右对齐:
dataGridView.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView.Columns[2].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

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

我见过一件事情被提及,那就是当排序图标阻止标题文本完全与单元格边距对齐时,标题文本可能看起来不会右对齐。

看看这是否有任何区别:

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

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,测试通过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接