我正在开发一个现有的软件,我有一个带有一些数据成员的对象。其中两个是货币(double)
。我需要将它们显示到datagridview中。我知道正确的解决方案是创建货币对象并重载ToString()
方法。但是我不能改变(或者至少它将需要我很多重新测试)现有的对象。
我更改了DefaultCellStyle中的格式值,结果几乎就是我想要的。
myCol.DefaultCellStyle.Format = "C2"; display $23.56
我也想自定义货币符号。
有什么想法吗?
修改
我想我找到了解决方案:
myCol.DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("de-DE"); //display the euro symbol
答案 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
是货币类型对象的更好选择。