4

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

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

在此处输入图像描述

我使用的代码:

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

有人能帮我吗?

4

3 回答 3

13

代码有效:您在标题文本右侧看到的空间是“正常的”。

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

在此处输入图像描述

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

在此处输入图像描述

3/ 点击栏目后:

在此处输入图像描述

于 2013-07-01T19:34:13.300 回答
2

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

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

在此处输入图像描述

于 2016-10-05T06:25:46.237 回答
-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;
}
于 2016-03-25T08:49:50.213 回答