【问题标题】:Right align a column in datagridview doesn't work右对齐datagridview中的列不起作用
【发布时间】:2016-10-05 14:25:46
【问题描述】:

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

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

我使用的代码:

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

有人可以帮我吗?

【问题讨论】:

    标签: c# winforms datagridview


    【解决方案1】:

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

    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/点击列后:

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
        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;
        }
        

        【讨论】:

          猜你喜欢
          • 2010-11-08
          • 2011-07-10
          • 2018-11-11
          • 1970-01-01
          • 2012-04-06
          • 2012-11-12
          • 1970-01-01
          • 1970-01-01
          • 2022-07-22
          相关资源
          最近更新 更多