博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
30 Days of .NET [Windows Mobile Applications] - Day 01: Minutes to Midnight Countdown(午夜倒数器)...
阅读量:6940 次
发布时间:2019-06-27

本文共 2218 字,大约阅读时间需要 7 分钟。

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

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

需求

这个需求的由来,作者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 下载见 , Windows Mobile 6 SDK 下载于 。

实现

这些程序很简单,关键运用了Timer,DateTime和进程条(Progress Bar)。

Timer是通过控件使用的,所以回调时间在属性里进行配置,如下:

2009052020183863.png

图1

2009052020174080.png

图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"),显示正常。

安装文件: 

源代码: 

 

Jake's Blog in 博客园 -- 

    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2009/05/20/1471334.html,如需转载请自行联系原作者

你可能感兴趣的文章
swift 警告框 - 自定义按钮颜色,图片
查看>>
提高搜索引擎结果页面排名的各种技术
查看>>
刷题常用的STL容器总结
查看>>
创建一个支持ES6的Nodejs项目
查看>>
sqlserver 行转列、字符串行转列、自动生产行转列脚本
查看>>
仿微信表情输入
查看>>
慎用dictionaryWithObjectsAndKeys方法
查看>>
兼容FF IE的回车事件
查看>>
冒泡排序,快速排序, 二叉树,一致性哈希
查看>>
sdut 1451 括号东东 (dp或模拟)
查看>>
POJ1002 487-3279
查看>>
Visual Studio 2012+jQuery-1.7.1
查看>>
Appium 在 Android UI 测试中的应用
查看>>
登录界面 动画背景效果
查看>>
DEV 第三方控件报表分类汇总
查看>>
Linux c 学习第一天
查看>>
ios 安卓
查看>>
c简单的单向链表
查看>>
DLL技术应用03 - 零基础入门学习Delphi46
查看>>
多维数组元素的地址
查看>>