首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在datagridview中收集时间

问在datagridview中收集时间
EN

Stack Overflow用户
提问于 2017-12-21 17:58:32
回答 1查看 47关注 0票数 1

之前我在表中有一个双精度格式,以便我可以整理列,并在表的末尾获得"Saldo“的结果,我如何使用DATETIME来做这件事呢?

​

​

代码语言:javascript
复制
if (e.RowIndex == this.dataGridView1.NewRowIndex)
{
    e.CellStyle.Font = new Font(e.CellStyle.Font, FontStyle.Bold);
    e.CellStyle.ForeColor = Color.Red;
    switch (e.ColumnIndex)
    {
        case 0:
            //e.Value = "Saldo";
            // e.Value = benutzer;
        break;
        case 1:
            double sum = 0.0d;
            for (int i = 0; i < this.dataGridView1.NewRowIndex; i++)
            {
                var value = this.dataGridView1[1, i].Value;
                if (value is double)
                {
                    sum += ((double)value);
                }
            }
            e.Value = "Saldo: " + Math.Round(sum, 1);
        break;
        case 2:
            e.Value = benutzer;
        break;
    }
}

感谢大家的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-21 18:10:15

显然,value不是双精度的,所以和永远不会改变。更改代码

代码语言:javascript
复制
if (value is double)
{
    sum += ((double)value);
}

至

代码语言:javascript
复制
if (value is TimeSpan)
{
    sum += ((TimeSpan)value).TotalHours;
}

TotalHours属性以double类型的小数值形式返回小时数,例如8.5。另请参阅Documentation of the TotalHours property。

如果您希望得到类似于17:30:00的输出,则应将这些值求和为TimeSpan,如下所示:

代码语言:javascript
复制
        case 1:
            TimeSpan sum = TimeSpan.FromHours(0.0);
            for (int i = 0; i < this.dataGridView1.NewRowIndex; i++)
            {
                var value = this.dataGridView1[1, i].Value;
                if (value is TimeSpan)
                {
                    sum += ((TimeSpan)value);
                }
            }
            e.Value = "Saldo: " + sum;
        break;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47922336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档