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

如何右对齐 DataGridView 列中的文本?我正在编写一个 .NET WinForms 应用程序。

【问题讨论】:

    标签: .net winforms datagridview datagridviewcolumn


    【解决方案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 以改进您的格式。
          猜你喜欢
          • 1970-01-01
          • 2010-11-08
          • 2014-12-29
          • 1970-01-01
          • 2011-10-13
          • 1970-01-01
          • 2010-09-15
          • 1970-01-01
          • 2012-04-06
          相关资源
          最近更新 更多