我想使用System.Globalisation.CultureInfo.CurrentCulture.NumberFormat定义的当前文化设置显示货币金额(在DataGridView的单元格中),除了,我不希望出现零值 - 即我希望它们留空
所以,我想知道是否可以将以下两种方法结合起来显示值:
string.format("{0:c}", 1) // will show $1.00 on a machine with typical English (US) settings
BUT;
string.format("{0:c}", 0) // will show $0.00 on a machine with typical English (US) settings
我知道我可以实现我想要的用途;
string.format("{0:"$##,##0.00";($##,##0.00);''}", 0)
然而,据我了解,这对文化背景不敏感。
有可能实现两者,如果是,如何实现?
我正在寻找可以实现的解决方案,在最好的情况下,通过设置DataGridViewCell的format属性,从而允许DataGridView为我处理所有格式。也许我需要继承该单元格类型并覆盖一些东西......?
答案 0 :(得分:1)
您可以创建自定义格式提供程序,然后将其用于Format属性。 这应该有助于http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx#Y990
答案 1 :(得分:0)
string s = "";
if(amount != 0){
s = string.Format("{0:c}", amount);
}
答案 2 :(得分:-1)
我希望这就是你要找的东西
CultureInfo cinfo = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name);
cinfo.NumberFormat.CurrencyDecimalDigits = 0;
现在您已经在CultureInfo类中进行了必要的修改,现在将此CultureInfo
分配回CurrentCulture
和CurrentUICulture
,您应该很高兴
修改强> 这可以帮助你抑制零
string.Format("{0}{1:#.#}", Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol, value);