积极答复者
winform 开发 设置DataGridView中的列为货币格式

问题
答案
-
有两种方式,一种是Column6,Column7 列为字符串,这时需要将值格式化为字符串,或是设置Column6,Column7为decimal类型是,用下面的第二种方法设置格式。
第一种方法:
https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.100).aspx列举一些代码供您参考
decimal value = 123.456m; Console.WriteLine(value.ToString("C2")); // Displays $123.46
这里显示的是美元,你将线程的culture改成中文即可显示为人民币字符格式。
decimal value = 123.456m; Console.WriteLine("Your account balance is {0:C2}.", value); // Displays "Your account balance is $123.46.
double value = 12345.6789; Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture)); Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture)); Console.WriteLine(value.ToString("C3", CultureInfo.CreateSpecificCulture("da-DK"))); // The example displays the following output on a system whose // current culture is English (United States): // $12,345.68 // $12,345.679 // kr 12.345,679
第二种方法 设置列格式化
先设置列为decimal类型
grid1.Columns["Debit"].ValueType = Type.GetType("System.Decimal")
grid1.Columns["Credit"].ValueType = Type.GetType("System.Decimal")grid1.Columns[1].DefaultCellStyle.Format = "c";
grid1.Columns[1].DefaultCellStyle.Format = "c2";
grid1.Columns[1].DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("en-GB");参考
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-format-data-in-the-windows-forms-datagridview-control
专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
- 已编辑 Shuanghua Li 2018年1月5日 0:52
- 已标记为答案 xtualong 2018年1月5日 15:00
全部回复
-
有两种方式,一种是Column6,Column7 列为字符串,这时需要将值格式化为字符串,或是设置Column6,Column7为decimal类型是,用下面的第二种方法设置格式。
第一种方法:
https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.100).aspx列举一些代码供您参考
decimal value = 123.456m; Console.WriteLine(value.ToString("C2")); // Displays $123.46
这里显示的是美元,你将线程的culture改成中文即可显示为人民币字符格式。
decimal value = 123.456m; Console.WriteLine("Your account balance is {0:C2}.", value); // Displays "Your account balance is $123.46.
double value = 12345.6789; Console.WriteLine(value.ToString("C", CultureInfo.CurrentCulture)); Console.WriteLine(value.ToString("C3", CultureInfo.CurrentCulture)); Console.WriteLine(value.ToString("C3", CultureInfo.CreateSpecificCulture("da-DK"))); // The example displays the following output on a system whose // current culture is English (United States): // $12,345.68 // $12,345.679 // kr 12.345,679
第二种方法 设置列格式化
先设置列为decimal类型
grid1.Columns["Debit"].ValueType = Type.GetType("System.Decimal")
grid1.Columns["Credit"].ValueType = Type.GetType("System.Decimal")grid1.Columns[1].DefaultCellStyle.Format = "c";
grid1.Columns[1].DefaultCellStyle.Format = "c2";
grid1.Columns[1].DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("en-GB");参考
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-format-data-in-the-windows-forms-datagridview-control
专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
- 已编辑 Shuanghua Li 2018年1月5日 0:52
- 已标记为答案 xtualong 2018年1月5日 15:00
-
//遍历数组显示数据 for (int m = 0; m <= myArrayTable.GetUpperBound(0); m++) { dgvVoucherQuery.Rows.Add(1); for (int n = 0; n <= myArrayTable.GetUpperBound(1); n++) { dgvVoucherQuery.Rows[m].Cells[n].Value = myArrayTable[m, n]; } if (myArrayTable.GetValue(m+1, 2) == null)//去除数组末尾多于的空行 { break; } }
您好,感谢您的耐心解答。
我的DataGridView 是通过遍历一个字符串类型的二维数组取得的。我在定义列的时候加了如下代码,还是没实现效果。
public void ResetColumn() { dgvVoucherQuery.Columns.Clear(); dgvVoucherQuery.Columns.Add("Column1", "日期"); dgvVoucherQuery.Columns.Add("Column2", "凭证字号"); dgvVoucherQuery.Columns.Add("Column3", "摘要"); dgvVoucherQuery.Columns.Add("Column4", "科目代码"); dgvVoucherQuery.Columns.Add("Column5", "科目名称"); dgvVoucherQuery.Columns.Add("Column6", "借方"); dgvVoucherQuery.Columns.Add("Column7", "贷方"); dgvVoucherQuery.Columns["Column6"].ValueType = Type.GetType("System.Decimal"); dgvVoucherQuery.Columns["Column6"].DefaultCellStyle.Format = "C2"; //dgvVoucherQuery.Columns[5].DefaultCellStyle.Format = "C2"; //dgvVoucherQuery.Columns[6].DefaultCellStyle.Format = "C2"; //dgvVoucherQuery.Columns[5].DefaultCellStyle.NullValue = ""; //dgvVoucherQuery.Columns[6].DefaultCellStyle.NullValue = "no entry"; }
最终的显示效果还是这样的
借方 贷方
14343.0000 0.0000
0.0000 1234.0000
-
试着加下语言设定
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-cn");
专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
- 已编辑 Shuanghua Li 2018年1月8日 0:58