DefaultCellStyle将不适用

时间:2018-07-26 12:14:52

标签: c# winforms datagridview

我试图格式化DataGridView中2列的单元格,但是在UI上看不到格式。 这是我的代码:

gridView.Rows.Clear();
gridView.Columns.Clear();

List<DataGridViewColumn> rowList = new List<DataGridViewColumn>();
DataGridViewColumn col;

foreach (PropertyInfo info in typeof(T).GetProperties())
{
    col = new DataGridViewTextBoxColumn();
    col.Name = GetNameAttribute(info);
    col.HeaderText = GetTextAttribute(info);

    if (GetFieldTypeAttribute(info) == MyFieldTypes.MoneyField)
    {
        col.DefaultCellStyle = new DataGridViewCellStyle() { Format = "C2", Alignment = DataGridViewContentAlignment.MiddleRight };
        col.ValueType = typeof(System.Double);
    }

    gridView.Columns.Add(col);
}
gridView.Refresh();

也许您可以帮我吗?

2 个答案:

答案 0 :(得分:0)

只要执行col.DefaultCellStyle = new DataGridViewCellStyle() { Format = "C2", Alignment = DataGridViewContentAlignment.MiddleRight }; ,您的代码就应该起作用。尝试按照建议进行调试。

答案 1 :(得分:0)

我找到了一个解决方案,也许它不是最好的,但是它可行。

当我在每行上添加DefaultCellStyle时,它会起作用:

while (dr.Read())
    {
         row = (DataGridViewRow)dgvGridView.Rows[0].Clone();

         row.Cells[dgvGridView.Columns["Key"].Index].Value = dr.GetValue(0).ToString();
         row.Cells[dgvGridView.Columns["Amount"].Index].Value = dr.GetValue(8).ToString();
        // This Line works...
        row.Cells[dgvGridView.Columns["Amount"].Index].Style = new DataGridViewCellStyle() { Format = "C2", Alignment = DataGridViewContentAlignment.MiddleRight };

        dgvGridView.Rows.Add(row);
    }
dgvGridView.Refresh();