输入字符串的格式不正确

时间:2013-05-06 10:06:36

标签: c# forms datagridview .net-3.5 format

我有这段代码:

private string getTime(int time)
{
    TimeSpan t = TimeSpan.FromSeconds(time);
    return string.Format("{0:D2}:{1:D2}", t.Hours, t.Minutes, t.Seconds, t.Milliseconds);
}

稍后在我的应用程序中这部分代码:

dataGridView_Trips.Rows[i].Cells["top_Tijd"].Value = (string)getTime(routeInfo[0]);

无论我尝试将其作为string投射的方式或内容,一旦它尝试设置Cells["top_Tijd"]的值,它就会给我一个错误,在这种情况下,{{1}返回一个字符串getTime并告诉我这不是一个正确的十进制格式?

它试图将它设置为强,但告诉我它不是正确的十进制值,为什么?

Edit1:

尝试添加dataGridView_Trips.Columns [“top_Tijd”]。ValueType = typeof(string);无济于事。

EDIT2:

尝试删除getTime并粘贴在硬编码的“测试”中,并声称即使在设置了它的valuetype之后也需要小数。

Edit3:

以下是格式行为的屏幕截图...(无格式化。) enter image description here

3 个答案:

答案 0 :(得分:2)

我遇到了完全相同的问题:我已经解决了它更改了绑定到dgv列的MS Access数据库列中的值类型。

您无法直接从Visual Studio更改绑定列的类型:如果您的列具有已设置的DataPropertyName,则它是您要更改的Db列的名称。

如果无法编辑数据库,则必须将列的值复制到新的无绑定列中。

答案 1 :(得分:1)

因为"17:46"不是十进制。您的DataGridView可能将该列定义为Decimal。您应该将其更改为TimeSpanString或更合适的其他内容

答案 2 :(得分:0)

我会做一些不同的事情。首先 - 您要使用的格式为:“h:mm”或“HH:mm”。 其次 - 使用DateTime.ToString(yourFormat)格式化dateTimes。在这里查看文档:{​​{3}}