2010-01-26 65 views
1

我有一個最初爲Windows CE(使用Visual Studio 2008,C#2.0)構建的相當複雜的應用程序。我現在試圖讓它在Windows Mobile設備上運行。但是,有一些UI怪癖。我注意到背景顏色都是白色的,並且好像WinCE上沒有像很多控件一樣的邊框。然而,我最大的問題是,我的應用程序似乎佔用了全屏,所以我不能看到頂部的任務欄與開始菜單和點擊(大概是關閉按鈕爲我的應用程序?)。我也看不到通常有圖標顯示/隱藏鍵盤的底部欄(任務欄?)。端口Windows CE應用程序到Windows Mobile

我的方式被設定爲最大的CE所以應該佔據了大部分屏幕空間,但不會在任務欄(或多個)。我注意到,在創建新的智能設備項目時,Visual Studio會提示目標平臺(Windows CE或Windows Mobile)。我真的希望我不必重新編譯我的應用程序以在Windows Mobile上正常工作。

回答

1

在Windows Mobile上設置窗體的WindowsState屬性FormWindowState.Maximized將導致表成爲全屏覆蓋的導航欄頂部等

我已經做了很多的Windows Mobile <的 - > Windows CE的移植和一般情況下,如果我需要解決這樣的差異,我最終在執行平臺檢測檢查後在運行時設置適用的屬性。

使用.NET CF 3.5,你可以用類似下面的結束:

using Microsoft.WindowsCE.Forms; 

if (SystemSettings.Platform == WinCEPlatform.WinCEGeneric) 
    this.WindowState = FormWindowState.Maximized; 
else 
    this.WindowState = FormWindowState.Normal; // Pocket PC or Smartphone 

幸運的是有沒有太多的情況下,這樣的差異彈出。

對於Visual Studio提示大多數情況下(至少對於基於.NET CF的項目),選擇目標平臺時,只需更改表單設計器工具箱中您可以選擇的模擬器和控件列表。

在大多數情況下,你應該能夠對一個平臺上構建應用程序,並運行另一個生成的可執行文件。

一個方便的使用這一功能的是,它會爲你提供警告,如果您嘗試使用不是由特定的平臺支持的東西。例如,如果您嘗試使用System.Windows.Forms.Button控件,選擇智能手機平臺將發出警告,因爲智能手機(非觸摸屏)設備不支持這些控件。

+0

我正在使用.NET CF 2.0,我怎樣才能獲得相當於SystemSettings.Platform的? – Jason 2010-01-27 14:10:43

+0

看看我的博客文章 - http://www.christec.co.nz/blog/archives/77 - 與幾個PInvokes等你可以得到類似的信息 – 2010-01-28 08:47:08

0

正如您現在發現的那樣,Windows Mobile應用程序的屏幕屬性比Windows CE少一些。您將有一個頂部和底部欄,有時還有一個用於托盤圖標的附加底部欄。

要解決這個問題,你應該做一個平臺檢查,然後讓你的小表格,如果它的Windows Mobile。 如果您不能在不更改表格的情況下執行此操作(例如我的大多數情況下),您可以嘗試使用軟鍵並擺脫任何按鈕,複選框等。軟鍵可以充當按鈕或可以如果你想要菜單,甚至菜單內的菜單。

不要擔心太多關於目標平臺,如果你已經在Windows CE的一個工作程序。您不必切換到Windows Mobile,但您將可以訪問仿真器和工具箱中支持的控件,這已經被指出了。

相關問題