你如何在listview中总结时间值?

时间:2015-05-06 22:05:23

标签: c# listview

我在c#中设置了listview,其中一列包含时间值。我想知道如何总结这些。

我目前有一些代码,单击按钮可以将另一列中的小数值相加,并想知道是否可以对其进行操作以适应时间。

private void buttonListTotal_Click(object sender, EventArgs e)
{
    double grandtotalPower = 0;
    //TimeSpan grandtotalTime = 
    foreach (ListViewItem lstItem in listView1.Items)
    {
        grandtotalPower += double.Parse(lstItem.SubItems[1].Text);
    }
    textBoxListTotal.Text = Convert.ToString(grandtotalPower);
}

3 个答案:

答案 0 :(得分:1)

如果没有a good, minimal, complete code example清楚地显示您的控件的初始化方式以及您希望如何对值进行求和,那么无法确定最佳答案是什么。

那说了几点:

  • 您可以初始化"零"只需使用TimeSpan即可new TimeSpan()。例如。 TimeSpan grandtotalTime = new TimeSpan();
  • 您可以使用TimeSpan.Parse()解析经过时间值,就像您使用double.Parse()一样。

因此,假设您的案例中的列值是文本(与您已经汇总的double值相同),代码看起来像这样:

private void buttonListTotal_Click(object sender, EventArgs e)
{
    TimeSpan grandtotalTime = new TimeSpan();
    foreach (ListViewItem lstItem in listView1.Items)
    {
        // Use the correct SubItems[] index for your time values, of course,
        // and not the "1" that was in your double-based code.
        grandtotalTime += TimeSpan.Parse(lstItem.SubItems[1].Text);
    }
    textBoxListTotal.Text = Convert.ToString(grandtotalTime );
}

显然,如果您的实际情况偏离了您提供的基于double的示例,则需要调整上述内容以适应。但基本的想法是一样的。

答案 1 :(得分:1)

首先需要将thedatain子项[1]转换为时间跨度           离。

        TimeSpan grandtotalTime = new TimeSpan();
        TimeSpan ts;
         foreach (ListViewItem lstItem in listView1.Items)
           {

           ts = TimeSpan.Parse(lstItem.SubItems[1].Text);
           grandtotalTime += ts; 
            }
             textBoxListTotal.Text = Convert.ToString(grandtotalTime );
              }

我希望它会有所帮助

答案 2 :(得分:0)

这些列中的时间值是时间跨度吗?如果是这种情况,那么设置

var grandTotalTime = TimeSpan.Zero;

然后将您的时间值转换为它们的单位,并将它们添加到您的grandTotalTime。