将两列中的两种不同货币显示为datagridview

时间:2011-07-08 09:32:36

标签: c#

我正在开发一个现有的软件,我有一个带有一些数据成员的对象。其中两个是货币(double)。我需要将它们显示到datagridview中。我知道正确的解决方案是创建货币对象并重载ToString()方法。但是我不能改变(或者至少它将需要我很多重新测试)现有的对象。

我更改了DefaultCellStyle中的格式值,结果几乎就是我想要的。

myCol.DefaultCellStyle.Format = "C2"; display $23.56

我也想自定义货币符号。

有什么想法吗?

修改

我想我找到了解决方案:

myCol.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-DE"); //display the euro symbol

2 个答案:

答案 0 :(得分:0)

我认为您应该使用不同的NumberFormatInfo为附加列格式化代码值,在那里您可以指定不同的货币符号。

答案 1 :(得分:0)

您的解决方案将输出类似

的内容
  

123,123.00€

如果你想要它看起来像

  

€123,123.00

您可以处理CellFormatting事件,并将货币符号放在前面。

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0 && e.RowIndex != this.dataGridView1.NewRowIndex) //set your columnindex accordingly..
    {
        double d = double.Parse(e.Value.ToString());
        e.Value = string.Format(CultureInfo.CreateSpecificCulture("de-DE"), "{0:C}", d);
    }

}

BTW:Decimal是货币类型对象的更好选择。