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

简介:

得到原作者 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 博客园 -- 精简开发 无线生活




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


相关文章
|
3月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
1月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
96 9
|
1月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
3月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
220 3
|
3月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
|
3月前
|
网络安全 API 数据安全/隐私保护
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Windows)
|
3月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
3月前
|
开发框架 JavaScript .NET
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found
|
3月前
|
C# 开发者 Windows
WPF在.NET9中的重大更新:Windows 11 主题
WPF在.NET9中的重大更新:Windows 11 主题
49 0
|
4月前
|
C# 开发者 Windows
4款.NET开源、功能强大的Windows桌面工具箱
4款.NET开源、功能强大的Windows桌面工具箱