右对齐datagridview中的列不起作用

时间:2013-07-01 12:53:58

标签: c# winforms datagridview

我的datagridiview动态绑定到datatable。我想将标题中的一些列对齐到右对齐。

我为cellstyle和headercell尝试了datagridview的此设置。对于单元格样式,它显示正确,但对于标题,它不是:

enter image description here

我使用的代码:

this.dataGridView1.Columns["Quantity"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:10)

代码正常工作:您在标题文字右侧看到的空格是“正常”。

DataGridView支持按列排序。因此,每个列标题都保留足够的空间来显示排序字形(通常是箭头)。

如果您希望列标题中的文本完全右对齐,则需要禁用排序。将列的SortMode属性设置为 NotSortable 。这样可以防止为排序字形保留空间。

对象课程:

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 /加载表格后:

enter image description here

2 /单击复选框允许排序:

enter image description here

3 /点击列后:

enter image description here

答案 1 :(得分:1)

要设置列标题或单元格内容中的对齐,您可以使用IDE并打开dataGridView的此属性掩码。

Colunm属性中设置对齐单元格内容,或在RowHeaderDefaultCellStyle

中设置行标题aling

enter image description here

答案 2 :(得分:-1)

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