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

來源:互聯網
上載者:User

得到原作者 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 部落格園 -- 精簡開發 無線生活

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.