如何配置DataGridView将自定义货币符号对齐到数值右侧
DataGridView 指定列货币符号靠右配置方案
问题现状
当前配置下,输入数值213时,目标列单元格输出为 vnt. 213,和需要的 213 vnt. 排版方向相反。
原有实现代码:
var vntformat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); vntformat.CurrencySymbol = "vnt. "; advancedDataGridView1.Columns[21].DefaultCellStyle.FormatProvider = vntformat; advancedDataGridView1.Columns[21].DefaultCellStyle.Format = "c0";
问题原因
仅自定义CurrencySymbol文本时,NumberFormatInfo会沿用系统默认的货币符号位置规则,默认将符号展示在数值左侧,不会自动匹配靠右的排版需求。
配置修改方法
在自定义NumberFormatInfo的代码中,补充设置CurrencyPositivePattern属性,指定正数场景下货币符号的展示位置即可:
var vntformat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); // 去掉原CurrencySymbol里携带的冗余空格,符号和数值的间隔由格式属性自动控制,避免多空格问题 vntformat.CurrencySymbol = "vnt."; // 核心配置:正数场景下货币符号展示在数值右侧,中间保留空格 vntformat.CurrencyPositivePattern = 3; advancedDataGridView1.Columns[21].DefaultCellStyle.FormatProvider = vntformat; advancedDataGridView1.Columns[21].DefaultCellStyle.Format = "c0";
配置值对应效果参考
CurrencyPositivePattern不同取值对应的输出效果:
- 取值
0:输出格式为vnt.213,货币符号在数值左侧,无间隔 - 取值
1:输出格式为vnt. 213,货币符号在数值左侧,带空格,即原代码的默认输出效果 - 取值
2:输出格式为213vnt.,货币符号在数值右侧,无间隔 - 取值
3:输出格式为213 vnt.,即需要的目标效果
如果需要对齐负数场景下的符号位置,可额外配置CurrencyNegativePattern属性,取值逻辑和正数规则一致。
内容的提问来源于stack exchange,提问作者Linascts
相关产品推荐
相关产品推荐

