我在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);
}
答案 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。