0

我正在将 XML 文件加载到 GRIDVIEW 中,并且我设法做到了。但是我目前陷入一件事,那就是当我尝试加载一个特定值(47.138)时。该值应该以以下格式加载(分钟:秒.英里秒)。在这种情况下将是 "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; }
    }
4

2 回答 2

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 格式的更多信息。

于 2012-12-08T15:37:40.727 回答
0

扩展keyboardP的答案....

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 属性并将双精度数转换为字符串,方法是先转换为 TimeSpan 对象,然后以格式化字符串返回 TimeSpan。

然后,在您的网格中,将显示绑定到 FormattedFastestLap 而不是 FastestLap 属性。

于 2012-12-08T18:15:59.677 回答