C# 输入字符串的格式不正确

C# 输入字符串的格式不正确,c#,forms,datagridview,.net-3.5,format,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

我有一段代码:

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]);
无论我如何或以何种方式尝试将其转换为
字符串
,一旦它尝试设置
单元格[“top_Tijd”]
的值,它将给我一个错误,在这种情况下,
getTime
返回一个字符串
“17:46”
,并告诉我这不是正确的十进制格式

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

编辑1:

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

编辑2:

试图删除getTime并粘贴到硬编码的“test”中,并声称即使在设置了它的valuetype之后也需要decimal

编辑3:

下面是格式行为的屏幕截图。。。(无格式。)
在这里,我会做很多不同的事情。首先,您希望使用的格式是:“h:mm”或“HH:mm”。
其次,使用DateTime.ToString(yourFormat)格式化日期时间。请查看此处的文档:

,因为
“17:46”
不是十进制数。DataGridView可能将该列定义为十进制。您应该将其更改为
TimeSpan
String
或其他更合适的内容我遇到了完全相同的问题:我已经解决了更改绑定到dgv列的MS Access数据库列中的值类型的问题

不能直接从Visual Studio更改绑定列的类型:如果列具有设置的DataPropertyName,则必须更改的是Db列的名称


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

那么如何为该列配置DataGridView?(
top_Tijd
不是一个非常具有描述性的名称,因此很难说出它的含义……)作为初学者,您可以删除强制转换,因为
getTime
已经返回了一个字符串。除此之外,
getTime
返回什么,以及
routeInfo[0]
的值是多少?也许您的列被定义为接受小数?将其设置为
数据类型
字符串
@JonSkeet它被设置为文本框。必须包含HH:MM这样的字符串。@StefanM routeInfo[0]将秒作为整数。TimeSpan只是将其转换为HH:MM格式。在这种情况下是17:46。不管它的格式是什么,datagridview都不会接受它。我只是不明白为什么它不只是接受它作为一个字符串。它实际上不是一个日期,而是一次旅行的持续时间/长度。因此,我选择使用TimeSpan.Good punt-但TimeSpan.ToString()也存在-请在此确认:-使用几乎相同的格式字符串参数-因此您可以使用TimeSpan.ToString(“hh:mm”)。谢谢,但GetTime仍然返回一个“字符串”,我不明白为什么datagridview不接受它。该列是默认的。但是我该如何更改它以接受作为字符串的值呢?它是一个字符串,getTime返回一个字符串。我想将其存储为字符串。此外,我尝试将其ValueType更改为typeof(string),但生成了相同的错误消息。谢谢,在以类似的方式解决此问题后,我实际上忘记了此问题。