2009-07-06 57 views
13

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

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. 

我相信我在做一些非常愚蠢的事情,但是,我无法得到这个工作。

回答

22

正如我在写下以下我意识到的东西可能是问题 - 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; 
0

您可以对齐所有列标题那样,而不是做一个个..从VB answer采取

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

参考,测试成功。