發表文章

目前顯示的是 1月, 2011的文章

OpenNETCF.Desktop.Communication在x64電腦上出現"數學運算導致溢位"或是"找不到檔案"的錯誤訊息

圖片
當有需要將Windows Mobile的裝置中的資料給抓回來電腦的時候,通常第一個想到的就是利用RAPI或是利用OpenNetCF提供的Communication類別來做,而當使用OnenNetCF提供的類別來做的時候,在x64的電腦上,你會發現在呼叫方法的時候,常常會莫名其妙的出現『數學運算導致溢位』或是『找不到遠端檔案』的錯誤訊息,真的是名奇妙,明明沒有做運算,天外飛來這筆還真是令人找不到頭緒。 經過搜尋相關資料以及經過一些測試之後,終於找到了元凶,相信您從標題中已經看出了端倪,為什麼強調x64?是的,OpenNetCF在x64的環境中直接使用會出現問題,這個跟Access的OleDB在x64中的問題極其類似,解決的方式就是要修改一下編譯的設定,將Any CPU變更為x86 經過設定之後就可以順利運作了 YAYAYA~ 如果您需要Desktop.Communcation的使用說明,這邊有一篇很棒的文章不要錯過了喔 [推薦工具]OpenNETCF.Desktop.Communication Library

ShellTileSchedule;定時更換應用程式在Tile的背景圖片

在WP7中,當應用程式安裝完成之後就會出現在應用程式的列表當中,而在應用程式上長按之後,就會出現Pin to start的功能;這個功能是能夠讓你將你的應用程式顯示在首頁的Tile畫面上;而應用程式放到Start畫面上之後,最會最常被使用者看到、點選的,那麼我們就會希望幫在Start畫面上的應用程式上加上一些訊息,很常見的例如說Email的應用程式會顯示有幾封新的郵件這樣;而除了使用文字的方式來顯示訊息之外,也可以變更背景的圖片,來讓使用者有不一樣的感覺,例如說一個顯示目前天氣狀況的應用程式,用鮮明的圖片來做顯示就會比裡用單純使用文字說明來的更好。那麼,該怎麼變更應用程式的背景圖片呢? 更新應用程式的背景圖片可以使用Push Notification來做,Push Notification能夠做到滿多事情的,而如果說不想要使用Push Notification呢?今天要跟各位介紹的就是另一種方式,利用ShellTileSchedule來做;ShellTileSchedule能夠定時的連到你指定的位置去下載圖片,下載完成之後,就會變成應用程式的背景圖片了。在開始之前,應用程式使用的圖片有一定的規格,建議您依照對應的規格來做圖片的處理,您可以參考在MSDN的這篇介紹 Windows Phone 7 應用程式圖示製作指南 ,上有有相當詳盡的說明喔。 接下來來看看程式的部分,使用ShellTileSchedule的程式碼相當的簡單,例如下面的樣子 sts.Recurrence = Microsoft.Phone.Shell.UpdateRecurrence.Interval; sts.Interval = Microsoft.Phone.Shell.UpdateInterval.EveryHour; sts.StartTime = DateTime.Now; sts.RemoteImageUri = new Uri(@"http://bauann.myweb.hinet.net/test01.png"); sts.Start(); 像是上面的程式碼便會在每個小時到筆者放圖片的位置去下載圖片,並且設定為應用程式的背景圖片;接來來來看看一些屬性的用途是做

在WP7的TextBox如果需要Click事件該怎麼做呢?

已經忘了在哪邊看到相關的文章了,不過還是筆記一下;在預設TextBox上面只會有MouseLeftButtonDown這個事件可以偵測使用者是否點選,而這個事件是一點選就馬上會觸發了,如果想要Click的效果,也就是按下、放開,這樣的動作才要觸發的話,就要而外的處理一下;這類的需求是比較少見一些,不過如果需要在TextBox上實作Click的動作的話可以參考下面的方式。 首先建立一個新的類別,在這個類別中會繼承原先的TextBox,並且加上一個自訂事件 namespace MyCtl { public class nTextBlock : TextBox { bool isMouseDown = false; public delegate void deOnClick(object sender,MouseButtonEventArgs e); public event deOnClick OnClick; protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { isMouseDown = true; base.OnMouseLeftButtonDown(e); } protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e) { if (isMouseDown) { isMouseDown = false; OnClick(this,e); } else base.OnMouseLeftButtonUp(e); } } } 而在主要頁面上可以用下面的方式將控制項加進來使用 MyCtl.nTextBlock nTxt = new MyCtl.nTextBlock();