如何显示在datagridview的列动态C#中的数字计时器(秒表)? [英] How do I display a digital timer (StopWatch) in datagridview column dynamically c#?

查看:331
本文介绍了如何显示在datagridview的列动态C#中的数字计时器(秒表)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的datagridview的数据源是数据表

I have datagridview whose datasource is datatable.

我在datagridview的两列:

I have two columns in datagridview:

NAME, IN TIME

NAME, IN TIME

在DataGridView加载后,我想添加一个名为期限新列这是一个基于时间上的计时器列,即,持续时间列应显示秒表与CURRENT TIME时间的时间跨度区间。

After the datagridview is loaded, I want to add a new column called DURATION which is a timer column i.e. based on the IN TIME, DURATION column should display a stopwatch with the timespan interval of CURRENT TIME-IN TIME.

我如何持续时间列秒表继续计时,如数字时钟每秒?

How do I make the DURATION column stopwatch to continue the timer for every seconds like digital clock?

推荐答案

您可以将字符串列添加到数据表,并以此为时间列。然后,你可以订阅勾选您设置的时间间隔为1000,显示的结果倒计时持续时间列计时器的计时器事件:

You can add a string column to DataTable and use it as duration column. Then you can subscribe to Tick event of a timer which you set it's interval to 1000 and show the result of count down timer in duration column:

void timer_Tick(object sender, EventArgs e)
{
    foreach( DataRow row in YourDataTable.Rows)
    {
        var diff = row.Field<DateTime>("DateTimeColumn").Subtract(DateTime.Now);
        if(diff.TotalSeconds>0)
        {
            row["DurationColumn"] = string.Format("{0} d {1:D2}:{2:D2}:{3:D2}", 
                                       diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
        }
        else
        {
            row["DurationColumn"] = "0 d 00:00:00";
        }
    }
}

这篇关于如何显示在datagridview的列动态C#中的数字计时器(秒表)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆