如何更改DataGrid中的数字分隔符?

时间:2016-06-24 15:22:57

标签: c# excel winforms cultureinfo currentuiculture

我有一个数字格式的查询。当更改小数点分隔符(。)---> (,)使用区域设置,在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的比较图像 enter image description here

请任何人建议我如何实现这一点,如excel ???

2 个答案:

答案 0 :(得分:1)

我看到了一些问题。

  1. 您需要在NumberFormat的{​​{1}}对象上设置小数和组分隔符字符串,而不是CurrentCulture
  2. 您需要确保绑定该数据网格列的基础类型是浮点类型,例如CurrentUICulture。我怀疑它目前是一个整体类型,例如decimal

答案 1 :(得分:1)

要将自定义数字格式应用于列,您应该执行以下设置:

  • 要设置列的数字格式以显示千位分隔符并定义小数点后的位数(例如2位数),您应该为"N2"指定DefaultCellStyle.Format属性{ {1}}。

  • 要使用自定义千位分隔符和自定义小数点字符,您应该根据文化创建Column,例如CultureInfo,然后更改其"en-US"NumberFormat.NumberDecimalSeparator并将文化设置为NumberFormat.NumberGroupSeparator的{​​{1}}。

  • 此外,如果列是绑定列,请将其DefaultCellStyle.FormatProvider设置为数字类型。如果它是绑定列,请确保数据库中的基础列具有上述类型之一。

示例

下面的代码将一个未绑定的列添加到网格中,并使用标题为&#34的列的格式;第一列"它显示Column,如ValyeType。它使用1234567.89作为千位分隔符,使用1.234.567,89作为小数点:

"."