【问题标题】:Different format for datagridview cell in edit mode编辑模式下datagridview单元格的不同格式
【发布时间】:2014-11-20 00:17:58
【问题描述】:

我有一个显示整数的文本 datagridview 列。
我将格式属性设置为colTextDefaultCellStyle.Format = "#,##0";。

所以显示的数字有千位分隔符。

在编辑模式下,我不想显示千位分隔符。
但我不知道该怎么做。这例如不起作用:

void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    DataGridViewCell cell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];

    if (e.ColumnIndex == colText.Index)
    {
        if (cell.IsInEditMode) cell.Style.Format = "";
        else cell.Style.Format = "#,##0";
    }
}

【问题讨论】:

    标签: winforms formatting datagridviewcolumn editmode


    【解决方案1】:

    您需要应用实际格式,然后将e.FormattingApplied 设置为True。

    void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.ColumnIndex == colText.Index)
        {
            DataGridViewCell cell = dgv.Item[e.ColumnIndex, e.RowIndex];
    
            if (cell.IsInEditMode)
            {
                e.Value = e.Value.ToString();
            }
            else
            {
                e.Value = e.Value.ToString("#,##0");
            }
            e.FormattingApplied = true;
        }
    }
    

    【讨论】:

    • e.FormattingApplied = true; 在我的情况下不是必需的
    • 还因为 e.Value 是一个对象 double 在我的情况下,该值必须强制转换/转换为双精度才能使方法 ToString("#,##0") 可用
    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多