2010-01-26 102 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,但您将可以访问仿真器和工具箱中支持的控件,这已经被指出了。

相关问题