在datagridview中右对齐一列无效
问题描述:
我有一个datagridiview
,它被动态绑定到datatable
。我想将标题中的一些列对齐。在datagridview中右对齐一列无效
对于cellstyle和headercell,我尝试了datagridview
这个设置。对于细胞的风格是正确的,但显示的头是不是:
的代码我使用:
this.dataGridView1.Columns["Quantity"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
有人能帮我吗?
答
代码作品:您在标题文本右侧看到的空间为“正常”。
DataGridView
支持按列排序。因此,每个列标题保留足够的空间来显示排序字形(通常是一个箭头)。
如果您希望列标题中的文本为完全对齐,则需要禁用排序。将该列的SortMode
属性设置为NotSortable。这将防止为排序字形保留空间。
对象课:
2 /允许通过点击复选框排序:
public class FrmTest : Form
{
public FrmTest()
{
InitializeComponent();
this.DataGridView1.Columns[0].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
this.DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
}
private void CheckBox1_CheckedChanged(System.Object sender, System.EventArgs e)
{
if (this.CheckBox1.Checked) {
this.DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.Automatic;
} else {
this.DataGridView1.Columns[0].SortMode = DataGridViewColumnSortMode.NotSortable;
}
this.DataGridView1.Refresh();
}
}
1 /加载形式后
3 /点击c后olumn:
答
foreach (DataGridViewColumn col in dataGridView2.Columns){
col.SortMode = DataGridViewColumnSortMode.NotSortable; // This first set it work
col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
col.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}