如何更改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?

我看到一些问题。

  1. 您需要在CurrentCultureNumberFormat对象上设置十进制和组分隔符string,而不是CurrentUICulture
  2. 您需要确保绑定到的数据网格列的基础types是浮点types,如decimal 。 我怀疑目前它是一个整型,比如int

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

  • 若要设置列的数字格式以显示千位分隔符并定义小数点后的位数(例如2位数),则应将"N2"分配给Column DefaultCellStyle.Format属性。

  • 要使用自定义千位分隔符和自定义小数点字符,您应该创build基于文化的CultureInfo (例如"en-US" ,然后更改其NumberFormat.NumberDecimalSeparatorNumberFormat.NumberGroupSeparator并将区域设置为DefaultCellStyle.FormatProvider Column

  • 另外,如果列是绑定列,请将其ValyeType设置为数字types。 如果是绑定列,请确保数据库中的底层列具有上述types之一。

下面的代码将一个未绑定的列添加到网格中,并使用标题为“Column One”的列的格式,它显示1234567.891.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";