如何更改DataGrid中的数字分隔符?
我有一个数字格式的查询。当使用区域设置更改小数点分隔符(。)—>(,)时,在Excel表格中键入(1.5)将正确更改为(1,5)。
我的问题是在DataGridView控件中,我遵循DataGrid中的相同的过程,但它显示(1.5)—>(15)。 (,)运算符已被删除。 我需要知道,这是DataGrid的实际行为。 我们可以像excel一样执行相同的操作吗? 我已经尝试下面的代码。
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); CultureInfo culture = CultureInfo.CurrentUICulture; culture.NumberFormat.NumberDecimalSeparator = ","; culture.NumberFormat.NumberGroupSeparator = ".";
请参考excel和DataGrid的比较图像
请任何一个build议我如何实现这个像excel?
我看到一些问题。
- 您需要在
CurrentCulture
的NumberFormat
对象上设置十进制和组分隔符string,而不是CurrentUICulture
。 - 您需要确保绑定到的数据网格列的基础types是浮点types,如
decimal
。 我怀疑目前它是一个整型,比如int
。
要将自定义数字格式应用于列,您应该执行以下设置:
-
若要设置列的数字格式以显示千位分隔符并定义小数点后的位数(例如2位数),则应将
"N2"
分配给Column
DefaultCellStyle.Format
属性。 -
要使用自定义千位分隔符和自定义小数点字符,您应该创build基于文化的
CultureInfo
(例如"en-US"
,然后更改其NumberFormat.NumberDecimalSeparator
和NumberFormat.NumberGroupSeparator
并将区域设置为DefaultCellStyle.FormatProvider
Column
。 -
另外,如果列是绑定列,请将其
ValyeType
设置为数字types。 如果是绑定列,请确保数据库中的底层列具有上述types之一。
例
下面的代码将一个未绑定的列添加到网格中,并使用标题为“Column One”的列的格式,它显示1234567.89
如1.234.567,89
。 它使用"."
作为千位分隔符和","
作为小数点:
this.dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { ValueType = typeof(double), Name = "Column1", HeaderText = "Column One" }); var culture= CultureInfo.CreateSpecificCulture("en-US"); culture.NumberFormat.NumberDecimalSeparator=","; culture.NumberFormat.NumberGroupSeparator="."; this.dataGridView1.Columns["Column1"].DefaultCellStyle.FormatProvider = culture; this.dataGridView1.Columns["Column1"].DefaultCellStyle.Format = "N2";