c# - 是否可以使用当前文化设置格式化数字但将 0 显示为空白?

标签 c# string-formatting currency

我想使用由 System.Globalisation.CultureInfo.CurrentCulture.NumberFormat 定义的当前文化设置显示货币金额(在 DataGridView 的单元格中),除了,我不希望出现零值 - 即我希望它们显示留空

所以,我想知道是否可以结合以下两种方法来显示值:

string.format("{0:c}", 1)  // will show $1.00 on a machine with typical English (US) settings

但是;

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 的格式属性,从而允许 DataGridView 为我处理所有格式设置。也许我需要对该单元格类型进行子类化并覆盖某些内容...?

最佳答案

您可以创建自定义格式提供程序,然后将其用于格式属性。 这应该有帮助 http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx#Y990

关于c# - 是否可以使用当前文化设置格式化数字但将 0 显示为空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367285/

相关文章:

c# - 仅使用 ToString 将字节转换为两位十六进制数?

python - Python的日志格式可以根据消息日志级别进行修改吗?

java - 安卓 |货币转换器实时汇率

c# - C# 中 byte 和 Byte 数据类型的区别

python - 采用整数 n 并使用字符串格式将 pi 打印为 n 位数字的函数

c# - 与打开 FileStream 相关的异常问题

ruby-on-rails-2 - Rails 2 - 绝对的金钱

javascript - Javascript Intl.NumberFormat 问题

c# - 使用windows服务和c#检测USB驱动器插入和移除

c# - 为什么 WPF 呈现折叠或隐藏控件?