我正在将一个XML文件加载到GRIDVIEW中,我设法这样做了。但我现在陷入了一件事,那就是,当我尝试加载一个特定值(47.138)时。该值应该按以下格式加载(Minutes:Seconds.Mileseconds)。在这种情况下,“0:47.138”。
我的问题是,如何加载此类数据并以正确的格式显示?
XmlNodeList drivers = doc.GetElementsByTagName("Driver");
foreach (XmlNode driver in drivers)
{
dInfo = new BusObjects.DriverInfo();
if (driver.ChildNodes[i].Name.Equals("BestLapTime"))
dInfo.FastestLap = Convert.ToDouble(driver.ChildNodes[i].InnerText).ToString("????");
}
这是我的DriverInfo.cs
private double _fastestlap;
public double FastestLap
{
get { return _fastestlap; }
set { _fastestlap = value; }
}
答案 0 :(得分:0)
您可以创建TimeSpan
对象并使用它来格式化文本。
TimeSpan ts = TimeSpan.FromSeconds(47.138);
Console.WriteLine(ts.ToString(@"mm\:ss\.fff"));
在DriverInfo
课程中,您可以使用方法为您执行此操作。
public string GetFormattedTime()
{
TimeSpan ts = TimeSpan.FromSeconds(_fastestlap);
return ts.ToString(@"mm\:ss\.fff");
//shorter version if you prefer
//return TimeSpan.FromSeconds(_fastestlap).ToString(@"mm\:ss\.fff");
}
MSDN提供了有关自定义TimeSpan格式的更多信息。
答案 1 :(得分:0)
扩展keyboardP's answer ....
foreach (XmlNode driver in drivers)
{
dInfo = new BusObjects.DriverInfo();
if (driver.ChildNodes[i].Name.Equals("BestLapTime"))
{
dInfo.FastestLap = Convert.ToDouble(driver.ChildNodes[i].InnerText);
}
}
// you can use an auto property for FastestLap
public double FastestLap {get; set;}
// Add another property for FormattedFastestLap:
public string FormattedFastestLap
{
get { return TimeSpan.FromSeconds(FastestLap).ToString(@"mm\:ss\.fff"); }
}
在foreach
循环中,您设置的是FastestLap的值,这是一个双精度值。通过创建另一个名为FormattedFastestLap的属性,您可以访问FastestLap属性并将double转换为字符串,方法是先转换为TimeSpan对象,然后以格式化字符串返回TimeSpan。
在网格中,然后将显示绑定到FormattedFastestLap而不是FastestLap属性。