右对齐datagridview中的列不起作用

Dor*_*eka 4 c# datagridview winforms

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

datagridview为ce​​llstyle和headercell 尝试了这个设置.对于单元格样式,它显示正确,但对于标题,它不是:

在此输入图像描述

我用过的代码:

this.dataGridView1.Columns["Quantity"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dataGridView1.Columns["UnitPrice"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
Run Code Online (Sandbox Code Playgroud)

有人能帮我吗?

Chr*_*ris 12

代码有效:您在标题文本右侧看到的空格是"正常".

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

1 /加载表格后:

在此输入图像描述

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

在此输入图像描述

3 /单击列后:

在此输入图像描述