我有一个带有DataTable的DataGridView,之前已将其填充为DataSource。不幸的是,有些双打被格式化为指数格式,我不知道该如何更改:
创建数据表(稍后将成为数据源):
void CreateDataTable()
{
logFileDataTable = new DataTable();
logFileDataTable.Columns.Add("line", typeof(int));
logFileDataTable.Columns.Add("time", typeof(string));
logFileDataTable.Columns.Add("delay", typeof(double));
logFileDataTable.Columns.Add("thread", typeof(string));
logFileDataTable.Columns.Add("task", typeof(string));
logFileDataTable.Columns.Add("value", typeof(string));
logFileDataTable.Columns.Add("message", typeof(string));
}
破坏tmp变量并将字符串转换为double:
double logDelay = 0;
if (match.Groups[4].Value != null && match.Groups[4].Value != "")
{
logDelay = double.Parse(match.Groups[4].Value.Replace(".", ","));
}
将行添加到数据表:
logFileDataTable.Rows.Add(logZeile, logZeit, logDelay, logThread, logTask, logValue, logMeldung);
分配数据源:
dataGridView.DataSource = logFileDataTable;
由于DataTable列也是两倍,所以我不能使用任何字符串格式来更改它。有人帮忙吗? :)
欢呼
编辑: 调试代码表明在解析之前该值是正确的:
答案 0 :(得分:0)
您可以在DataGridView组件上设置列本身的格式,如下所示:
var delayColumnName = "delay";
var numberWithDecimalsFormat = "N7";
table.Columns.Add(delayColumnName, typeof(double));
table.Rows.Add(0.000098);
dataGridView1.DataSource = table;
dataGridView1.Columns[delayColumnName].DefaultCellStyle.Format = numberWithDecimalsFormat;
这样,您将格式化显示的内容。 因此,如果用户输入一个新号码,它也会按照指定的格式进行格式化。
请查看here,了解更多格式设置选项。