需求:最近做一个即时通项目,需要结合OA项目;其中有一个待办事项需要倒计时,准备在DataGridView里展示,如图:

第一步:绑定数据

  for (int intLoop = ; intLoop <= ; intLoop++)
{
this.dgvSteps.Rows.Add(
Test.Properties.Resources.PROCESS_READY,
intLoop.ToString(),
"第" + intLoop.ToString() + "个任务&为开始",
"{0}天{1}小时{2}分钟{3}秒",
"处理"
);
}

第二步:定义System.Threading.Timer(一定要在定义局部变量,不然会被回收的)

DateTime dtStart;
private System.Threading.Timer timerClose;
private void btnStart_Click(object sender, EventArgs e)
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
timerClose = new System.Threading.Timer(new TimerCallback(timerCall), autoEvent, , );
dtStart = DateTime.Now.AddHours();
} private void timerCall(object obj)
{ TimeSpan ts = dtStart - DateTime.Now;
if (ts < TimeSpan.Zero)
{
for (int i = ; i < this.dgvSteps.Rows.Count; i++)
{
this.dgvSteps.Rows[i].Cells[].Value = "超时";
}
}
else
{
for (int i = ; i < this.dgvSteps.Rows.Count; i++)
{
this.dgvSteps.Rows[i].Cells[].Value = string.Format("{0}天{1}小时{2}分钟{3}秒", ts.Days, ts.Hours, ts.Minutes, ts.Seconds);
}
} }

源码地址:下载

最新文章

  1. 自定义view(一)
  2. yii2的权限管理系统RBAC简单介绍
  3. overload, override和overwrite之间的区别
  4. i686和x86_64的区别
  5. Unity. Navigation和寻路
  6. 原来腾讯还出过一个开源项目libco
  7. HTML5表单内元素的required属性
  8. ZOJ3689 Digging(01背包)
  9. ViewPager和View的事件响应规则
  10. 利刃 MVVMLight 3:双向数据绑定
  11. IOS任务管理之GCD使用
  12. Windows10 图标重建
  13. 【知识整理】这可能是最好的RxJava 2.x 入门教程(五)
  14. Health Check in eShop -- 解析微软微服务架构Demo(五)
  15. python_自定日历
  16. Linux 文本去重 之 命令sort 与 uniq
  17. [IOI2007] sails 船帆
  18. 第4章 DHCP服务
  19. 1e9个兵临城下
  20. ios12 siri 语音识别

热门文章

  1. Spring编程风格
  2. Asp.Net MVC 模型(使用Entity Framework创建模型类) - Part.1
  3. ramdisk作为根文件系统的配置
  4. linux防火墙启动、停止、查看
  5. ExpectationMaximum
  6. 位操作:BitVector32结构 z
  7. 【mongodb 学习一】环境搭建之 mac 下连接 mongodb 的UI 客户端
  8. LeetCode题解——Add Two Numbers
  9. mac中viso的兼容工具
  10. faplayer编译配置经验