30 Days of .NET [Windows Mobile Applications] - Day 01: Minutes to Midnight Countdown(午夜倒数器)...
得到原作者 Chris Craft 的同意,本人可以翻譯他的系列文章 30 Days of .NET [Windows Mobile Applications]并在博客園里發(fā)表。這是一個(gè)十分趣味性很高的系列,通過(guò)這個(gè)系列的學(xué)習(xí),可以掌握Windows Mobile開(kāi)發(fā)很多技巧,包括GPS,Bluetooth,界面編程,多線(xiàn)程等等。
在這個(gè)系列的文章,我不會(huì)逐句翻譯,而是討論需求的由來(lái),對(duì)需求的分析思考,對(duì)實(shí)現(xiàn)的表述,以及對(duì)現(xiàn)有實(shí)現(xiàn)的改進(jìn)想法,希望能成為原文的補(bǔ)充。第一篇文章是實(shí)現(xiàn)一個(gè)午夜倒數(shù)器。原文見(jiàn) Day 01: Minutes to Midnight Countdown
需求
這個(gè)需求的由來(lái),作者Chris Craft打算寫(xiě)一個(gè)30 Days of .NET [Windows Mobile Applications]開(kāi)發(fā)的系列文章,然后想到自己是否有決心寫(xiě)完,每個(gè)人都自己的生活:家庭,朋友,事業(yè),興趣已經(jīng)夢(mèng)想。每個(gè)人一天都有而且只有24小時(shí),我們可以知道的是到底還有多少時(shí)間剩下在這一天。
其實(shí)很多時(shí)候,我們做事情光有想法,不付諸行動(dòng),或者行動(dòng)中半途而廢。作者在開(kāi)始的時(shí)候也懷疑自己是否有決心把事情做完,最終的結(jié)果顯示Chris Craft做到了,我希望也向Chris Craft學(xué)習(xí),把這個(gè)系列的文章學(xué)一遍。如果你還是在Windows Mobile開(kāi)發(fā)的門(mén)外徘徊,可以跟著這個(gè)系列每天學(xué)一點(diǎn),想一點(diǎn),不多也不少,打開(kāi)Windows Mobile開(kāi)發(fā)精彩之門(mén),感受個(gè)中樂(lè)趣。
準(zhǔn)備工作
學(xué)習(xí)這個(gè)系列,需要安裝Visual Studio 2008和Windows Mobile 6 SDK。 Visual Studio 2008 Express 下載見(jiàn) Visual Studio Express, Windows Mobile 6 SDK 下載于 Windows Mobile 6 Professional and Standard Software Development Kits Refresh。
實(shí)現(xiàn)
這些程序很簡(jiǎn)單,關(guān)鍵運(yùn)用了Timer,DateTime和進(jìn)程條(Progress Bar)。
Timer是通過(guò)控件使用的,所以回調(diào)時(shí)間在屬性里進(jìn)行配置,如下:
圖1
圖2
Interval設(shè)置為100表示每100毫秒回調(diào)一次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;
}
這個(gè)回調(diào)函數(shù)的算法也很簡(jiǎn)單,DateTime.Now.Date.AddDays(1)取出午夜的時(shí)間DateTime對(duì)象,然后和當(dāng)前時(shí)間相減得到TimeSpan的對(duì)象timeSpan,從timeSpan的取出當(dāng)前和午夜的時(shí)間差呈現(xiàn)到Label以及ProgressBar上。在total minutes left上,作者做了處理,因?yàn)橛袝r(shí)候會(huì)顯示小數(shù)錯(cuò)誤"X.666666666 of 1440 total minutes left".通過(guò)字符串的格式化以后timeSpan.TotalMinutes.ToString("#.0"),顯示正常。
安裝文件: minutes2Midnight.cab
源代碼: minuates2Midnight.zip
?
.NET Compact Framework, WinCE, Windows Mobile開(kāi)發(fā)系列
Jake's Blog in 博客園 -- 精簡(jiǎn)開(kāi)發(fā) 無(wú)線(xiàn)生活
轉(zhuǎn)載于:https://www.cnblogs.com/procoder/archive/2009/05/20/1471334.html
總結(jié)
以上是生活随笔為你收集整理的30 Days of .NET [Windows Mobile Applications] - Day 01: Minutes to Midnight Countdown(午夜倒数器)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ITCAST视频-Spring学习笔记(
- 下一篇: 学习笔记92—python 画横竖分界线