如何右对齐 DataGridView 列中的文本?

Posted

技术标签:

【中文标题】如何右对齐 DataGridView 列中的文本?【英文标题】:How can I right-align text in a DataGridView column? 【发布时间】:2011-07-10 23:03:39 【问题描述】:

我正在编写一个 .NET WinForms 应用程序。

【问题讨论】:

【参考方案1】:
this.dataGridView1.Columns["CustomerName"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; 

【讨论】:

同理:进入datagridview的Collections属性;点击栏目;在 Appearance 类别下的顶部会有一个 DefaultCellStyle 字段;点击 '...';将弹出一个 CellStyle Builder 窗口,其中包含对齐等内容。因此,您可以在表单编辑器中设置属性,而无需诉诸硬编码。 (to leetNightshade...) 在表单编辑器中设置值可以被认为是硬编码。通过在代码中设置值(如 MUG4N 给出的解决方案),可以根据数据类型更改对齐方式。例如。如果单元格包含数字数据,则使用右对齐;如果单元格包含文本数据,则使用左对齐。请记住,网格可以在运行时以编程方式填充(例如,如果它们不是数据绑定的)。还可以从配置源读取对齐设置并在运行时动态设置它们。干杯。 要修改标题单元格,请使用this.dataGridView1.Columns["CustomerName"].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;【参考方案2】:

在 dataGridCell 中设置对齐文本有两种方法:

为特定单元格设置对齐方式或为行中的每个单元格设置对齐方式。

一栏请转至Columns->DataGridViewCellStyle

对于每一列,请转到RowDefaultCellStyle

控制面板如下:

【讨论】:

【参考方案3】:

我知道这是旧的,但对于那些浏览这个问题的人,MUG4N 的答案将对齐使用相同默认单元格样式的所有列。我没有使用 autogeneratecolumns,所以这是不可接受的。相反,我使用了:

e.Column.DefaultCellStyle = new DataGridViewCellStyle(e.Column.DefaultCellStyle);
e.Column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

在这种情况下,e 来自:

Grd_ColumnAdded(object sender, DataGridViewColumnEventArgs e)  

【讨论】:

【参考方案4】:

您可以通过 Foreach 循环使用这个简单的代码一次编辑所有列

        foreach (DataGridViewColumn item in datagridview1.Columns)
        
            item.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
        

【讨论】:

【参考方案5】:
<DataGridTextColumn Header="Quantity" Binding="Binding Quantity" >
  <DataGridTextColumn.ElementStyle>
    <Style TargetType="x:Type TextBlock">
       <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>
  </DataGridTextColumn.ElementStyle>
</DataGridTextColumn>

【讨论】:

欢迎来到 Stack Overflow。这里不鼓励仅使用代码的答案,因为它们没有解释它如何解决问题。请编辑您的答案以解释代码的作用以及它如何回答问题,以便它对其他用户以及 OP 也有用。【参考方案6】:

当我们处理对齐和配置时,使用 (C#)匿名类型可以减少重复性任务。更容易阅读和高级操作可以在一个地方进行编辑。就像在这个datagridview dg 配置中

foreach (var conf in new []  
  new  Col = 0, WidthPercent = 40, Align = DataGridViewContentAlignment.MiddleCenter  ,
  new  Col = 1, WidthPercent = 30, Align = DataGridViewContentAlignment.MiddleCenter  ,
  new  Col = 2, WidthPercent = 30, Align = DataGridViewContentAlignment.MiddleCenter 
)

  dg.Columns[conf.Col].Width = (int)(dg.Width * conf.WidthPercent/100);
  dg.Columns[conf.Col].DefaultCellStyle.Alignment = conf.Align;

【讨论】:

在进入 datagridview 时,有时转换数据并使用匿名定义的列名填充网格也很有用。 dg.DataSource = MyList.Select(d=>new Name=d.Key, IP=d.Value.ip, Refreshed = DateTime.Now.ToString("HH:mm:ss") ).ToList(); 【参考方案7】:

DataGridViewColumn column0 = dataGridViewGroup.Columns[0]; DataGridViewColumn column1 = dataGridViewGroup.Columns[1]; column1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; column1.Width = 120;

【讨论】:

社区鼓励在代码中添加解释,而不是纯粹基于代码的答案(参见here)。另外,请查看formatting help page 以改进您的格式。

以上是关于如何右对齐 DataGridView 列中的文本?的主要内容,如果未能解决你的问题,请参考以下文章

Html.Grid 右对齐列中的数据

如何在 WPF 中自动调整和右对齐 GridViewColumn 数据?

如何使用 Console.WriteLine 对齐列中的文本?

在颤动中对齐 Row 小部件的子项内的文本

右对齐数据表列中的单元格内容

C# datagridview 最后一列右对齐