得到原作者 Chris Craft 的同意,本人可以翻译他的系列文章 30 Days of .NET [Windows Mobile Applications]并在博客园里发表。这是一个十分趣味性很高的系列,通过这个系列的学习,可以掌握Windows Mobile开发很多技巧,包括GPS,Bluetooth,界面编程,多线程等等。

在这个系列的文章,我不会逐句翻译,而是讨论需求的由来,对需求的分析思考,对实现的表述,以及对现有实现的改进想法,希望能成为原文的补充。第一篇文章是实现一个午夜倒数器。原文见 Day 01: Minutes to Midnight Countdown

需求

这个需求的由来,作者Chris Craft打算写一个30 Days of .NET [Windows Mobile Applications]开发的系列文章,然后想到自己是否有决心写完,每个人都自己的生活:家庭,朋友,事业,兴趣已经梦想。每个人一天都有而且只有24小时,我们可以知道的是到底还有多少时间剩下在这一天。

其实很多时候,我们做事情光有想法,不付诸行动,或者行动中半途而废。作者在开始的时候也怀疑自己是否有决心把事情做完,最终的结果显示Chris Craft做到了,我希望也向Chris Craft学习,把这个系列的文章学一遍。如果你还是在Windows Mobile开发的门外徘徊,可以跟着这个系列每天学一点,想一点,不多也不少,打开Windows Mobile开发精彩之门,感受个中乐趣。

准备工作

学习这个系列,需要安装Visual Studio 2008和Windows Mobile 6 SDK。 Visual Studio 2008 Express 下载见 Visual Studio Express, Windows Mobile 6 SDK 下载于 Windows Mobile 6 Professional and Standard Software Development Kits Refresh。

实现

这些程序很简单,关键运用了Timer,DateTime和进程条(Progress Bar)。
Timer是通过控件使用的,所以回调时间在属性里进行配置,如下:

图1

图2
Interval设置为100表示每100毫秒回调一次timer_Tick(object sender, EventArgs e)。

private void timer_Tick(object sender, EventArgs e)
{
 TimeSpan timeSpan = DateTime.Now.Date.AddDays(1) - DateTime.Now;
 labelHours.Text = string.Format("{0} of 24 hours left", timeSpan.Hours);
 labelMinutes.Text = string.Format("{0} of 60 minutes left", timeSpan.Minutes);
 labelSeconds.Text = string.Format("{0} of 60 seconds left", timeSpan.Seconds);

labelTotalMinutes.Text = string.Format("{0} of 1440 total minutes left", timeSpan.TotalMinutes.ToString("#.0"));
 labelTotalSeconds.Text = string.Format("{0} of 86400 total seconds left", timeSpan.TotalSeconds);

progressBarTotal.Value = 86400 - (int) timeSpan.TotalSeconds;

progressBarHours.Value = 24 - timeSpan.Hours;
 progressBarMinutes.Value = 60 - timeSpan.Minutes;
 progressBarSeconds.Value = 60 - timeSpan.Seconds;

progressBarTotalMinutes.Value = 1440 - (int) timeSpan.TotalMinutes;
 progressBarTotalSeconds.Value = 86400 - (int) timeSpan.TotalSeconds;
}

这个回调函数的算法也很简单,DateTime.Now.Date.AddDays(1)取出午夜的时间DateTime对象,然后和当前时间相减得到TimeSpan的对象timeSpan,从timeSpan的取出当前和午夜的时间差呈现到Label以及ProgressBar上。在total minutes left上,作者做了处理,因为有时候会显示小数错误"X.666666666 of 1440 total minutes left".通过字符串的格式化以后timeSpan.TotalMinutes.ToString("#.0"),显示正常。

安装文件: minutes2Midnight.cab

源代码: minuates2Midnight.zip

.NET Compact Framework, WinCE, Windows Mobile开发系列

Jake's Blog in 博客园 -- 精简开发 无线生活

转载于:https://www.cnblogs.com/procoder/archive/2009/05/20/1471334.html

30 Days of .NET [Windows Mobile Applications] - Day 01: Minutes to Midnight Countdown(午夜倒数器)...相关推荐

  1. Windows Mobile开发总结 01

    http://www.cnblogs.com/peterzb/archive/2009/08/09/1542451.html Windows Mobile开发总结 Posted on 2009-08- ...

  2. Windows Mobile 与 PC之间的通过蓝牙(Bluetooth) 传输文件的开发

    背景 之前也写过一些Windows Mobile和Wince下Bluetooth开发的文章如下. .NET Compact Framework下的Bluetooth开发 之 Windows Embed ...

  3. Windows Mobile 开发系列文章收藏 - Windows Mobile 6.x

    收集整理一些Windows Mobile 6.x开发相关文章, 文章及相关代码大部分搜集自网络,版权属于原作者! 智能手机      手机词汇      研发手机基本流程 WAP协议分析(1)     ...

  4. Windows Mobile下GPS管理软件NavsGo之GPS侦测功能的开发

    简述 在上篇文章 Windows Mobile下GPS管理软件NavsGo之GPS监控功能的开发 概述了NavsGo项目以及讲述了GPS监控功能的开发,GPS.net控件的使用,这篇文章讲述侦测功能的 ...

  5. .NET Compact Framework s60v3(在S60上运行Windows Mobile程序)

    注:以下内容未经过本人测试,只是看到该消息,本人没有S60手机,无法测试真实性和可靠性,但希望能够将消息告诉给所有对.Net CF热爱的同志.这将是一缕曙光,使得S60上运行WM程序变为可能. 原贴如 ...

  6. Windows Mobile Topics at TechEd 2008

    今年已经不再有MEDC了,因为MEDC已经跟TechEd合并,今年美国的TechEd 2008大会上,将会有哪些Windows Mobile相关的课程呢.总的来说,今年的TechEd 2008会以Vi ...

  7. 本月 Windows Mobile 文章推荐

    今日屏幕插件和主屏幕插件的架构 Architectures of the Today Screen Plug-in and the Home Screen Plug-in http://msdn2.m ...

  8. Application Architecture Guide 2.0 - CH 19 - Mobile Applications(5)

    本文翻译"Deployment"."Pattern Map"."Pattern Descriptions"和"Technology ...

  9. ILockBytes Windows Mobile 6.5

    ILockBytes Windows Mobile 6.5 https://msdn.microsoft.com/zh-cn/library/aa911496(en-us,MSDN.10).aspx ...

最新文章

  1. 图形显卡_显卡缺货?专业图形卡主机方案演示,Quadro P2200
  2. 解决firefox不能安装Flash插件
  3. java 切换主线程_Java线程状态及切换、关闭线程的正确姿势分享
  4. OpenInfra 十一年:OpenStack 部署规模超 2500 万计算核心
  5. C#.net中什么类型能存放这种数组!
  6. 可能拥有海洋的天然卫星 科学家近日发现有食盐成分
  7. java 转dwg转图片_dwg转pdf要怎么转换
  8. MySQL Spatial Analysis Functions(空间计算方法)
  9. 65lbc184应用电路原理_75lbc184应用电路
  10. 样条曲面_用SolidWorks画一个自然、光顺过渡的曲面
  11. 运用加密技术保护Java源代码
  12. 身份证地址码mysql插入脚本
  13. java软件前端开发_前端的编程软件哪些比较好用?
  14. Echarts legend组件 图例默认选中状态
  15. “零代码”写爬虫下载自己全部的豆瓣影评
  16. wow语音服务器卡蓝条,魔兽世界6.0卡蓝条解决方法 登陆界面卡主解决办法
  17. [传感器][算法][python]根据IMU九轴加速度传感器数据序列,判断是否有触碰或翻转
  18. c#Winform代码里中英文切换
  19. html5自学总结及分析,HTML学习记录和总结
  20. Python基础周总结(1)

热门文章

  1. java的知识点45——事务||测试时间处理(java.sql.date,time,timestamp)
  2. PyQt5 技术篇-调用文件对话框获取文件、文件夹路径。文件对话框返回选中的多个文件路径
  3. JSP知识点笔记-常用技术方法
  4. 设置超链接在新的窗口中打开,而不是在本窗口中打开
  5. Spring Boot自动配置原理
  6. 流水灯实例,点亮发光管LED并闪烁(查表操作)
  7. 画单自由度系统传递函数(实频,虚频,幅频,相位,导纳)
  8. [YTU]_2566( 虚基类练习:动物)
  9. 整数的幂计算(三种方法)最快O(logn)
  10. phpcms发布新闻到数据库_Phpcms V9网站从本地上传到服务器需要修改的地方小结