My FAQ,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 其他
VS.NET和.NET Framework 精简版入门
作者:未知 时间:2003-05-08 12:12 出处:Microsoft 责编:MyFAQ
              摘要:暂无
摘要:学习如何使用 .NET Framework 1.0 精简版和 Visual Studio .NET 2003 开发可靠的智能客户端设备应用程序。

  简介

  Microsoft 开发 .NET Framework 精简版的目的就是:开发应用程序。我所说的应用程序是指那些用来显示、收集、处理和转发信息的应用程序,也就是那些能够促使用户携带某个设备的应用程序。尽管这些应用程序通常都有一个界面,但实际上它们并不需要。它们可以使用本地数据,也可以使用远程数据,或者同时使用这两种数据。

  .NET Framework 精简版简化了在智能设备上开发应用程序的过程。目前,智能设备包括 Pocket PC、Pocket PC 2002、Pocket PC Phone Edition 以及运行 Windows CE.NET 4.1 或更高版本的其他设备。

  您需要使用 Visual Studio .NET 2003 来创建针对 .NET Framework 精简版的应用程序。可以使用 Visual C# .NET 和/或 Visual Basic .NET 创建应用程序。

  .NET Framework 精简版有两个主要组件:公共语言运行库和 .NET Framework 精简版类库。

  运行时是 .NET Framework 精简版的基础。它负责在执行时管理代码,提供内存管理和线程管理等核心服务,同时又确保代码的安全性和准确性。针对运行时的代码称为托管代码,不针对运行时的代码称为非托管代码或本机代码,eMbedded Visual C++ 中的代码即是非托管代码。

  .NET Framework 精简版类库是可以重复使用的类的集合,您可使用它快速方便地开发应用程序。设计这种框架时考虑了其适用性,是适用于 Microsoft,还是适用于第三方平台。这对用户来说意味着什么呢?简单来说,如果 .NET Framework 精简版的某个版本是为某个平台(例如,移动电话或其他供应商的 PDA)创建的,那么您所使用的编码技术以及今天您为 Pocket PC 创建的应用程序将同样可以在这个平台上运行。

  公共语言运行时

  公共语言运行库提供了管理 .NET Framework 精简版代码的执行环境。代码管理的形式可以是内存管理、线程管理、安全性管理、代码验证和编译以及其他系统服务。

  运行时是为了增强性能而设计的。它使用实时 (JIT) 编译的方法,使托管代码能够以运行应用程序的平台的本机语言运行。这样,您就可以创建适用于多种平台的应用程序,而不用再担心如何分别为每个平台重新编译或重新生成可执行程序了。

  即使您的移动应用程序与托管代码一样都是用 Visual Basic .NET 或 C# .NET 编写的,仍然可以集成存储在动态链接库(DLL,包括 Windows CE API)外部的功能和子例程。.NET Framework 精简版提供的数据类型以及对结构的支持使您能够轻松地将 Windows CE API 的功能集成到您的应用程序中。

  .NET Framework 精简版类库

  .NET Framework 精简版类库是与公共语言运行库紧密集成的可重复使用类的集合。您的应用程序将利用这些库来派生出所需的功能。

  就象其他面向对象的类库一样,.NET Framework 精简版类型可用于完成许多常见的编程任务,包括界面设计、利用 XML、数据库访问、线程管理和文件输入/输出等。

  下面介绍通过 .NET Framework 精简版可以获得的常用功能。



  与窗体相关的类

  .NET Framework 精简版实现了 System.Windows.FormsSystem.Drawing 类的子集,使您能够为设备应用程序创建一个基于 Windows CE 的丰富的用户界面。Visual Studio.NET 中的 Form Designer(窗体设计器)将替您管理与这些类进行的大部分交互。

  可以在 .NET Framework 精简版下实现的 Windows 窗体包括:窗体支持、.NET Framework 中的大多数控件以及集成的第三方控件、位图和菜单。表 1 列出了 .NET Framework 精简版中包括的控件。

  表 1:.NET Framework 精简版中包括的控件

控件 说明
Button 简单的命令按钮
CheckBox 常见的复选框
ComboBox 包含多个项目的下拉列表
ContextMenu 实现上下文相关菜单
DataGrid 可以绑定到数据源的网格
DomainUpDown 可以通过滚动条浏览的项目列表
HScrollBar 水平滚动条
ImageList 存储图像的容器
InputPanel 控制软键盘输入面板 (SIP)
Label 用于显示文本的简单控件
ListBox 提供项目列表
ListView 提供四种数据视图:大图标、小图标、列表和详细资料
MainMenu 实现窗体上的菜单
NumericUpDown 包含滚动条的数字输入字段
OpenFileDialog 访问本机上的打开文件对话框
Panel 用于保存其他控件的容器
PictureBox 显示图像
ProgressBar 可视的任务进度指示器
RadioButton 常见的单选按钮
SaveFileDialog 访问本机上的保存文件对话框
StatusBar 用于显示文本的简单面板
TabControl 为应用程序提供选项卡界面
TextBox 标准的文本输入字段
Timer 基本的计时器组件
ToolBar 实现窗体上的工具栏
TrackBar 数字数据使用的滑块界面
TreeView 以层次结构的形式显示数据
VScrollBar 垂直滚动条

  由于 .NET Framework 精简版是 .NET Framework 完整版的子集,因而精简版包括的控件也是完整版的功能的子集。出于规模和性能方面的考虑,.NET Framework 精简版未包括某些控件属性、方法和事件。但如果需要,您只要完成少量的编码工作,就可以自己实现这些未包含的功能。这是因为 .NET Framework 精简版允许用户根据基础控件类创建自己的控件。这样,您就可以通过添加自己的属性、方法和事件来创建您自己真正需要的控件。

   数据和 XML 类

  .NET Framework 精简版包括一组类,使您能够轻松地将来自关系型数据源或非关系型数据源的数据(包括 XML 内容)集成到您的移动应用程序中。这些类是在 System.DataSystem.Xml 命名空间下定义的。.NET Framework 精简版所实现的数据和 XML 类是 .NET Framework 中的数据和 XML 类的子集。

  Web Services

  .NET Framework 与 Web 服务结合紧密。.NET Framework 精简版的 System.Web 命名空间所提供的功能是相应的 .NET Framework 命名空间提供的能力和功能的子集。更重要的是您可以创建 Web 服务客户端,但不能通过 .NET Framework 精简版来提供 Web 服务。

  这些 XML Web Service 客户端可以同步,也可以异步。创建用于 .NET Framework 精简版的 XML Web Service 客户端非常容易。使用 Visual Studio .NET IDE 可以完成大部分工作。

  GDI 支持

  .NET Framework 精简版通过 System.Drawing 命名空间支持基本的 GDI 绘图元素,包括位图、笔刷、字体、图标和画笔等。

  基类

  .NET Framework 精简版提供了许多基类,为开发人员提供了大量的功能。使用这种基础结构可以编写多种 .NET 应用程序,包括能创建多线程应用程序的应用程序 (System.Threading)、利用网络资源的应用程序 (System.Net) 以及处理文件的应用程序 (System.IO)。

  IrDA 支持

  Windows CE 设备(例如 Pocket PC 和 Pocket PC 2002)具备红外线 (IR) 通信能力。为了支持这种通信能力,.NET Framework 精简版中包括了许多类,使用户能够在自己的应用程序中利用 IR 通信。这些类是 System.Net.IrDA 命名空间的一部分。您可以使用 IR 与 Pocket PC、打印机以及其他支持 IR 的设备进行通信。

  Bluetooth 支持

  .NET Framework 精简版本身并不支持 Bluetooth。用户可以通过串行端口通信或通过供应商的 API 来访问针对 Pocket PC 的大多数第三方 Bluetooth 支持。

  Visual Basic 支持

  Visual Basic .NET 可以不受限制地使用 Visual Basic Helper 库中的辅助功能。.NET Framework 精简版也包括一部分辅助功能。之所以包括这些辅助功能,是因为 Visual Basic 开发人员认为它们是这种语言的核心组成部分。

  对于正在转换到 .NET Framework 精简版的 Visual Basic 或 eMbedded Visual Basic 开发人员来说,这意味着您过去经常使用的许多 Visual Basic 语言功能在 Visual Basic .NET 中同样可以获得。

  自选功能

  为了节省目标设备上的资源,Microsoft 将 .NET Framework 精简版分成几个逻辑组件。通过将组件作为单独的 DLL(或者 .NET Framework 精简版中所说的程序集)进行传递,Microsoft 使您能够选择所需的功能,并且只选择目标设备上能够容纳的功能。

  System.SR 程序集就是这样一个例子,它包含错误信息字符串。在应用程序中包括这样一个程序集后,用户就可以了解所发生的任何错误的详细信息。这在调试阶段非常有用,但等到将产品投入生产后,可能就不太需要了。即使应用程序中不包括这个程序集也不会影响应用程序的性能或功能,只是您不能查看详细的错误信息而已。

  .NET Framework 精简版自选功能实现方法的另一个例子是 SQL Server CE 组件,该组件以一组 DLL 的形式进行传递,总体大小稍稍超过 1 MB。除非您在应用程序中添加对 System.Data.SqlServerCe 程序集的引用,否则应用程序中将不包括这些 DLL。


  .NET Framework 精简版不包括的功能

  Microsot 已经对 .NET Framework 进行了一些重大的删减,使它能够适应 Windows CE 的操作限制。下面将介绍 .NET Framework 中包括而 .NET Framework 精简版中不包括的某些重要功能。

  方法重载

  重载方法即通过其他方式调用该方法,但它同时也增加了 .NET Framework 的大小。因此,.NET Framework 精简版几乎删除了所有方法的重载。

  这有两层含义。第一,开发基于 .NET Framework 精简版的应用程序时,您很有可能会发现以前用于桌面应用程序的某个方法重载在 .NET Framework 精简版中却找不到。第二,当您阅读 .NET Framework 精简版文档时,要特别注意它是否支持某种方法。

  缺少的控件

  .NET Framework 的很多控件都没有包括在 .NET Framework 精简版中。对于移动开发人员来说,缺少这些控件并没有太大的影响。由于打印功能在移动应用程序中的作用非常有限,因此删除与打印有关的所有控件都不会有什么问题。这些控件包括 CrystalReportViewer、PageSetupDialog、PrintDialog、PrintDocument、PrintPreviewControl 和 PrintPreviewDialog。缺少的这些对话框几乎都可以用您自己的对话框替代,或者使用 Windows CE API 直接访问系统对话框。

  可以用第三方控件替代 .NET Framework 精简版中缺少的控件。有关第三方 .NET Framework 精简版控件的列表,请参阅本文结尾处的参考信息。

  XML 功能

  .NET Framework 精简版也对其提供的 XML 功能作了同样的删减。缺少的主要 XML 组件是 System.Xml.XPath 命名空间。使用 XPath 命名空间进行 XML 分析比使用 .NET Framework 精简版提供的方法要容易得多。如果缺少 XPath 命名空间,则可以结合使用递归和迭代方法对文档对象模型 (DOM) 进行搜索。

  .NET Framework 精简版缺少的另一个主要 XML 组件是可扩展样式表语言转换 (XSLT)。使用 XSLT,您可以将 XML 文档转换为不同的格式。

  对于 XML 需要说明一点,.NET Framework 精简版目前不支持开发基于设备的 XML Web Service

  数据库支持

  .NET Framework 精简版提供许多与数据有关的工具。为 SQL Server CE 提供本地数据库支持。在服务器端,.NET Framework 精简版支持 SQL Server。

  请注意,有一家第三方供应商也提供用于 Pocket Access 数据库的 .NET Framework 精简版组件。有关详细信息,请参阅本文结尾处的参考信息。

  二进制序列化

  出于规模和性能方面的考虑,.NET Framework 精简版中删除了 BinaryFormatter 和 SoapFormatter 类。

  访问 Windows 注册表

  .NET Framework 包含 Microsoft.Win32.Registry 命名空间,因此很容易在应用程序中处理 Windows 注册表。很显然,这个命名空间并未包括在 .NET Framework 精简版中,因为它与 Win32 有关,而与 Windows CE 无关。您可以通过调用相应的 Windows API 来访问 Windows CE 注册表。

  利用 COM 组件

  将 COM 对象集成到基于 .NET Framework 精简版的应用程序中需要执行两个步骤。首先,必须编写能提供 COM 对象的非托管 DLL 包装(即使用 eMbedded Visual C++)。此步骤可繁可简,具体情况取决于 COM 对象的复杂程度。其次,必须使用 PInvoke 访问 DLL 包装。幸运的是,开发小组已经开始着手开发常用的 COM 组件了,本文结尾处的参考信息中列出了一些组件。

  安全性

  .NET Framework 精简版不能确保访问非托管代码时的安全性。任何应用程序都可以调用任何系统 API 或非系统 API。

  目前,.NET Framework 精简版不能提供基于角色的安全性。当事人对象无法识别已知标识或已知角色。

  XML Web Service

  .NET Framework 精简版 XML Web Service 缺少的最主要的是使用 Cookie 的功能。Cookies 广泛用于在客户端的各个调用之间在服务器上保留该客户端的状态。虽然 Cookie 在 Web 服务中的使用并不象在 Web 站点上那么普遍,但是仍在使用。

  .NET Framework 精简版只能对 Web 服务提供有限的加密能力。

  打印

  .NET Framework 精简版不支持打印。通过 IR 很难与网络打印机或外部打印机进行交互。

  要访问网络打印机,需要创建一个基于服务器的应用程序,它能够接受并打印移动应用程序提交的作业。

  可以通过 IR 端口直接将输出发送到支持 IR 的打印机上。可以使用 System.Net.IrDA 命名空间来访问移动设备的 IR 端口。

  GDI+

  Windows CE 本身并不支持 GDI+,因此 .NET Framework 精简版删除了与 GDI+ 相关的功能。

  远程处理

  .NET Framework 精简版的第一个版本不支持远程处理。


  使用 Visual Studio .NET 2003 进行开发

  Visual Studio .NET 2003 为创建针对 .NET Framework 精简版的应用程序提供了可靠的开发环境。Visual Studio .NET 包括一组预设的设备配置文件。设备配置文件包含创建针对特定设备的应用程序所需的信息。有了 Visual Studio .NET,也就有了创建针对 Pocket PC、Pocket PC 2002 和 Windows CE .NET 4.1 及更高版本的应用程序所需的配置文件。这些配置文件使用户能够创建包含 Windows 窗体和 ADO.NET 的应用程序,还为用户提供了使用 Web 服务的能力。

  配置文件可以是针对设备的(例如,专用于 Pocket PC 的配置文件),也可以是针对一般 Windows CE 平台的非专用配置文件,还可以是适用于任何支持 .NET Framework 精简版的平台的通用配置文件。

  Visual Studio .NET 支持设备工具包(以前称为 SDK)。与早期的嵌入工具相同,设备工具包独立于 Visual Studio .NET,可以单独安装和更新。

  IDE 的附加功能

  除了 Visual Studio .NET 本身具有的功能外,IDE 还具有以下针对设备的功能:

  • 模板 - 用于常见项目类型的预定义配置。模板可供 Pocket PC 和 Windows CE 设备使用。
  • 针对设备的控件 - 专用于 Pocket PC 和 Windows CE 的控件。已经对界面、资源消耗和功能进行了调整,以适应这些环境的需要。
  • 设备仿真器 - 模拟特定设备的测试环境。仿真器运行在开发人员的计算机上,可以在没有真正设备的情况下进行测试。
  • 自动部署应用程序 - 为开发人员提供无缝的测试环境,使他们能够轻松地测试仿真器或设备。
  • 远程调试 - 使用户可以对自己的设备应用程序使用 Visual Studio .NET IDE 提供的调试工具。所有调试工具都可用于仿真器或设备上运行的基于 .NET Framework 精简版的应用程序。
  支持的语言

  .NET Framework 精简版支持两种开发语言:C# .NET 和 Visual Basic .NET。虽然早期的 Windows CE 开发工具更偏爱基于 C 语言的语言(即 eMbedded Visual C++),但在 .NET Framework 精简版中,选择哪种语言并没有太大的影响,因为这两种开发语言具有同样强大的功能。

  由于 J# 是后来才添加到 Visual Studio .NET 开发环境中的,因此 .NET Framework 精简版不支持它。

  还有一点要说明的是,.NET Framework 精简版还有一个语言限制,这是 .NET Framework 所没有的。在 .NET Framework 中,一个项目可以使用多个语言的组件,而 .NET Framework 精简版中的项目则限制使用一种语言:C# .NET 或 Visual Basic .NET。.NET Framework 精简版解决这一单语言项目限制的方法是使用“类”模板创建其他项目。将可替代的语言代码添加到模板中,然后只要在应用程序项目中添加对这些类的引用即可。

  联机文档

  Visual Studio .NET 文档提供了有关 .NET Framework 精简版的信息。在这个文档中,您既会看到专门针对 .NET Framework 精简版的主题(例如“Creating Custom Controls with the .NET Compact Framework”),又会看到一些零散的描述 .NET Framework 精简版功能的行。

  图 1 显示了 .NET Framework 精简版支持的 DataTable 属性的示例。支持的每个属性都带有“.NET Framework 精简版支持”的注释。这是找出对象支持哪些功能并快速确定 .NET Framework 和 .NET Framework 精简版之间的不同之处的绝佳途径。

图 1:联机帮助

   创建 .NET Framework 精简版应用程序

  启动 Visual Studio .NET 后,屏幕上将显示 Start Page(开始页),如图 2 所示。从 Start Page(开始页)中,可以打开现有的项目或者创建新项目,包括针对 .NET Framework 精简版的项目。

图 2:Visual Studio .NET Start Page(开始页)

  单击 New Project(新建项目)按钮将显示 New Project(新建项目)对话框,如图 3 所示。在该对话框中,可以选择一个模板来创建许多项目类型,包括针对 .NET Framework 精简版的两种类型。Visual Basic Projects(Visual Basic 项目)和 Visual C# Projects(Visual C# 项目)文件夹下都有一个 Smart Device Application(智能设备应用程序)模板。

图 3:New Project(新建项目)对话框

启动 Visual Basic .NET 项目

创建 Visual Basic .NET 项目

  1. 启动 Visual Studio .NET 2003。
  2. 在 Start Page(开始页)中,单击 New Project(新建项目)按钮。
  3. 屏幕上将显示 New Project(新建项目)对话框,如图 3 所示。在 Project Types(项目类型)列表中,选择 Visual Basic Projects(Visual Basic 项目)文件夹。
  4. 屏幕上将显示 Visual Basic 项目模板。选择 Smart Device Application(智能设备应用程序)模板。
  5. Name(名称)字段中,输入项目的名称。
  6. Location(位置)字段中,输入要创建项目的位置。
  7. 单击 OK(确定)。
启动 Visual C# .NET 项目

创建 Visual C# .NET 项目

  1. 启动 Visual Studio .NET 2003。
  2. 在 Start Page(开始页)中,单击 New Project(新建项目)按钮。
  3. 屏幕上将显示 New Project(新建项目)对话框,如图 3 所示。在 Project Types(项目类型)列表中,选择 Visual C# Projects(Visual C# 项目)文件夹。
  4. 屏幕上将显示 Visual C# 项目模板。选择 Smart Device Application(智能设备应用程序)模板。
  5. Name(名称)字段中,输入项目的名称。
  6. Location(位置)字段中,输入要创建项目的位置。
  7. 单击 OK(确定)。
  Smart Device Application Wizard(智能设备应用程序向导)

  选择 Smart Device Application(智能设备应用程序)模板将加载 Smart Device Application Wizard(智能设备应用程序向导),如图 4 所示。此向导用于引导您完成选择应用程序项目类型的全过程。

图 4:Smart Device Application Wizard(智能设备应用程序向导)

  此向导的界面分成两个列表框。上面的列表框用于选择目标平台。它包括两个选项:Pocket PC 和 Windows CE。其中 Pocket PC 用于特定的设备平台,Windows CE 模板用于创建能够在运行该操作系统的多个设备上运行的、更通用的应用程序。

  下面的列表框显示选定的目标设备(Pocket PC 或 Windows CE)可以使用的项目类型。

  Pocket PC 项目类型

  Pocket PC 和 Pocket PC 2002 平台可以使用四种项目类型(如图 5 所示):Windows 应用程序、类库、非图形应用程序和空项目。表 2 列出了各项目类型的说明。

图 5:Pocket PC 项目类型

  通过这些项目类型,可以创建针对具有 Sb、MIPS 或 ARM 处理器的 Pocket PC 设备和具有 ARM 或 XScale 处理器的 Pocket PC 2002 设备的应用程序。

表 2:Pocket PC 项目类型

项目类型 说明
Windows 应用程序 基于 Windows 窗体的项目,包括 Pocket PC 特有的控件。这是最常用的模板,因为它生成基于 Windows 的应用程序。
类库 类库使用户可以将相关的组件打包在一个文件中。类库可用于开发其他应用程序,或者作为基础用于开发其他组件。此项目类型最适合创建将由多个应用程序重复使用的代码模块。
非图形应用程序 用于创建没有用户界面的可执行程序。最适合不需要用户界面的后台和维护应用程序。
空项目 定义没有预定义组件的项目,使用户能够从头开始创建任何自定义的应用程序。
注意:Pocket PC 设备不支持控制台。您可以通过加载 console.dll(由 Platform Builder [平台生成器] 提供)来解决这一问题。
  Windows CE 项目类型

  如图 6 所示,适用于 Windows CE 平台的项目类型有以下四种:Windows 应用程序、类库、控制台应用程序和空项目。表 3 列出了各项目类型的说明。

图 6:Windows CE 项目类型

  表 3:Windows CE 项目类型

项目类型 说明
Windows 应用程序 基于 Windows 窗体的项目,包括 Windows CE .NET 特有的控件。这是最常用的模板,因为它生成基于 Windows 的应用程序。
类库 类库使用户可以将相关的组件打包在一个文件中。类库可用于开发其他应用程序,或者作为基础用于开发其他组件。此项目类型最适合创建将由多个应用程序重复使用的代码模块。
控制台应用程序 用于创建将在控制台窗口中运行的可执行程序。最适合可能需要或不需要用户交互操作的后台和维修应用程序。与 Pocket PC 不同,Windows CE 本身支持控制台应用程序。
空项目 定义没有预定义组件的项目,使用户能够从头开始创建任何自定义的应用程序。
  设置项目属性

  与所有 Visual Studio .NET 项目一样,.NET Framework 精简版项目也使用 Project Property Pages(项目属性页)对话框进行配置。通过此对话框,可以配置要包括的命名空间、要用作启动窗体的窗体、与应用程序相关的图标、应用程序的创建方式、创建位置、部署方式、最佳配置以及各种其他设置。

  有两种方法可以访问 Property Pages(属性页)对话框:

  • 通过 Solutions Explorer(解决方案资源管理器)- 在项目上单击鼠标右键,然后单击 Properties(属性)。屏幕上将显示 Properties Pages(属性页)对话框,如图 7 所示。
  • 通过 Project(项目)菜单 - 首先在 Solutions Explorer(解决方案资源管理器)窗口中选择项目。然后在 Project(项目)菜单中单击 Properties(属性)。屏幕上将显示 Property Pages(属性页)对话框。

图 7:Property Pages(属性页)对话框

  创建界面

  如果您是经验丰富的 Visual Studio .NET 开发人员,只需稍加研究即可开始为针对 .NET Framework 精简版的应用程序创建用户界面。对于 Visual Studio .NET IDE 的新手来说,基于 Windows 应用程序模板的新项目将自动显示一个默认窗体,如图 8 所示。

  在此示例中,项目类型是针对 Pocket PC 的 Windows 应用程序。这种应用程序模板包括一个与 Pocket PC 平台大小完全匹配的窗体。此窗体包括一个菜单控件,显示在窗体之下,因为大多数 Pocket PC 应用程序都包括菜单。

图 8:默认的 Pocket PC 窗体

  包括的控件

  .NET Framework 精简版包括一个可用于构造桌面 Windows 应用程序的控件子集。您会发现,NET Framework 精简版中的控件在很大程度上是 .NET Framework 下相应控件的子集。其差别与目标平台带来的资源限制有关。

  表 4 显示了 .NET Framework 精简版提供的控件。

  表 4:.NET Framework 精简版中包括的控件

Button CheckBox ComboBox ContextMenu DomainUpDown
HScrollBar ImageList InputPanel Label ListBox
ListView MainMenu NumericUpDown OpenFileDialog Panel
PictureBox ProgressBar RadioButton SaveFileDialog StatusBar
TabControl TextBox Timer Toolbar TrackBar
TreeView VScrollBar DataGrid    
  注意:另外还有很多第三方控件。有关详细信息,请参阅本文结尾处的参考信息。

  创建自定义控件

  .NET Framework 精简版最棒的功能之一是它能够绕过限制进行编码。以控件为例。与 .NET Framework 完整版所提供的控件相比,.NET Framework 精简版提供的控件是很有限的。控件中缺少属性、方法和事件。不过,您可以通过 .NET Framework 精简版修改标准控件的功能,使其满足您的需要。

  可以将自定义控件分为三类:用户控件、继承的控件和自行绘制的控件。用户控件最容易创建,但 .NET Framework 精简版不支持这类控件。继承的控件是以 .NET Framework 精简版的某个控件为基础,然后根据需要添加、删除或修改该控件的属性、方法和事件。从控件的复杂程度来看,继承的控件要介于用户控件和自行绘制的控件之间。自行绘制的控件的界面能够提供最大的灵活性,但需要的工作量也最大。

  创建 .NET Framework 精简版自定义控件的过程本来不属于本文讨论的范围,但您会发现,.NET Framework 精简版实际上沿用了 .NET Framework 中使用的大多数技术和方法。

  通过下面的链接,可以了解如何创建在 .NET Framework 精简版中使用的自定义控件的其他详细信息:

Creating Custom Controls for the .NET Compact Framework(英文)

Developing Custom Controls in C# with Smart Device Extensions(英文)

Design-time Functionality for Custom Controls in Compact Framework and SDE(英文)

Creating Custom Controls with the .NET Compact Framework(英文)

  构造菜单

  任何在商业上取得成功的 Pocket PC 应用程序都包括了一个菜单栏。如果要创建包含许多功能的高效的 Pocket PC 应用程序,就需要使用菜单栏,这几乎成为一个不争的事实。

  菜单栏的使用非常普遍,因而默认的 Pocket PC Windows 应用程序模板为其创建的初始窗体自动附带了一个菜单栏。使用 Visual Studio .NET 和 .NET Framework 精简版,构造菜单既简单又直观。只要使用 Forms Designer(窗体设计器)提供的图形工具创建一个菜单层次结构即可。

  虽然使用设计时工具构造菜单是最容易的方法,但这并不是唯一的方法,还可以使用代码来构造菜单。这虽然复杂了一点,但有时您会希望在应用程序运行时动态地创建菜单,这时就可以使用这种方法。

  MainMenu 控件实际实现了窗体上的菜单栏。Menu Designer(菜单设计器)提供了用于配置 MainMenu 控件的图形界面。用户可以使用 Menu Designer(菜单设计器)来构造组成整个菜单栏的菜单和菜单项。

  激活菜单设计器

  1. 从 Visual Studio .NET IDE 中打开要添加菜单的窗体。如果窗体中没有 MainMenu 控件,请添加一个。
  2. 单击图标托盘中的 MainMenu 图标。将激活窗体上的菜单栏。
  3. 单击窗体上的菜单栏。将激活 Menu Designer(菜单设计器)。屏幕上将突出显示第一个菜单区域,如图 9 所示。

    图 9:菜单设计器中的空菜单

  4. 在突出显示的区域中输入第一个(最左边的)菜单的名称。在图 10 所示的示例中,即定义菜单 New(新建)。
  5. 这时,您可以添加其他菜单,也可以定义要显示在 New(新建)菜单上的菜单项。要添加其他菜单,只要在所定义的第一个菜单右侧的 Type Here(在此处键入)框中输入下一个菜单的名称即可。在图 10 中,即在 New(新建)菜单的右侧。在本例中,我们将添加一个 Edit(编辑)菜单。

    图 10:添加 New(新建)菜单

  6. 要定义 Edit(编辑)菜单的菜单项,请单击 Edit(编辑)菜单上方的 Type Here(在此处键入)框,然后输入菜单项的名称。图 11 说明了如何在 Edit(编辑)菜单中添加 Cut(剪切)菜单项。
  7. 继续创建菜单及菜单项,直到完成菜单。

    图 11:在 Edit(编辑)菜单中添加菜单项

  对菜单项进行编码

  创建菜单时,需要对用户点击或单击菜单项的操作做出响应。每个菜单项都有一个 Click 事件过程,该过程在用户点击该菜单项时执行。列表 1 显示了此过程的一个示例。

  列表 1:菜单项的 Click 事件过程

[Visual Basic]

Private Sub mnuEditCut_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles mnuEditCut.Click

MessageBox.Show("剪切...")

End Sub

[Visual C#]

private void mnuEditCut_Click(object sender, System.EventArgs e)

{

MessageBox.Show("剪切...");

}


   构造工具栏

  桌面系统开发人员应该注意,Pocket PC 环境中的工具栏与标准桌面应用程序的工具栏不同。最明显的不同之处在于,Pocket PC 工具栏出现在界面的底部,而不是顶部。另外,Pocket PC 工具栏中的按钮个数很有限,这是由于 Pocket PC 的屏幕空间太小造成的。这两个特性都可以在图 12 中看到。

图 12:工具栏示例

  在应用程序中,工具栏起着两个重要的作用。首先,工具栏可以为应用程序添加一些趣味。由于 Pocket PC 应用程序的空间有限,因而外观上一般都比较平淡。工具栏及其包含的按钮会给应用程序的界面增添一些视觉“冲击力”。

  其次,工具栏简化了用户界面。常用功能可以放到工具栏上,而不必嵌套在菜单中。这样做的好处在于,访问工具栏按钮只需点击一下,而访问菜单项至少需要点击两下,如果菜单项位于子菜单中,可能还要点击三下。

  构造工具栏的过程分为三步:

  1. 添加和配置 ImageList 控件。ImageList 控件提供最终显示在菜单按钮上的图像。
  2. 添加和配置 ToolBar 控件。ToolBar 控件定义组成实际工具栏(显示给最终用户)的按钮。
  3. 编写事件过程以响应点击按钮的操作。ToolBar 控件使用一个事件过程响应工具栏上的所有按钮点击操作。
  对工具栏进行编码

  使用工具栏时,您只需要注意一个事件,那就是用户点击按钮时激活的事件,即 ButtonClick 事件。ButtonClick 事件的事件过程是由所有按钮共享的。

  使用此事件过程要注意的唯一问题是确定点击了哪个按钮。通过引用传递给过程的事件参数很容易解决这个问题。通过引用 e.Button.ImageIndex,可以确定与点击的按钮相关联的图像。此索引是您将图像保存在 ImageList 控件中时分配给图像的原始索引。列表 2 说明了处理按钮点击操作的过程。

  列表 2:处理工具栏按钮点击操作

[Visual Basic]

Private Sub tlbMain_ButtonClick(ByVal sender As System.Object, _

ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) _

Handles tlbMain.ButtonClick

Select Case e.Button.ImageIndex

Case 0

MessageBox.Show("打印...")

Case 1

MessageBox.Show("任务...")

End Select

End Sub

[Visual C#]

private void tlBMain_ButtonClick(object sender,

System.Windows.Forms.ToolBarButtonClickEventArgs e)

{

switch (e.Button.ImageIndex)

{

case 0:

MessageBox.Show("打印...");

case 1:

MessageBox.Show("任务...");

}

}

  添加代码

  现在您已经了解了构造界面的基本知识,下面我要着重介绍如何在应用程序中添加代码。与在 Visual Studio .NET IDE 中开发的任何应用程序一样,代码是通过代码窗口添加的。

  如果您以前未使用过 Visual Studio .NET,使用该环境会使您感到乐趣无穷。代码窗口提供了极其丰富的功能,从完成语句到自动列出成员,从提供参数信息到可折叠的代码区域等等,不胜枚举。

  浏览代码的最快方法是使用窗口顶部的两个组合框。使用代码窗口左上角的组合框,可以在模块中选择一个类。使用窗口右上角的组合框,可以从该类中选择一种方法。


  测试应用程序

  完成用户界面并编写好代码之后,就可以测试应用程序了。Visual Studio .NET 提供了两种测试 .NET Framework 精简版应用程序的方法:通过仿真器测试以及在设备上测试。无论使用仿真器还是设备,Visual Studio .NET 都可以处理您的应用程序和应用程序所需要的所有组件的部署,包括 .NET Framework 精简版和 SQL Server CE。

  所有这些都是在从 Visual Studio .NET 2003 中测试 .NET Framework 精简版应用程序时处理的。这时会检查目标平台,确认是否安装了 .NET Framework 精简版。如果 Visual Studio .NET 找不到 .NET Framework 精简版,它将在尝试运行应用程序之前自动复制并安装 .NET Framework 精简版。此安装过程将在以下情况下发生:您第一次使用设备或仿真器进行测试时,或者您对设备或仿真器进行强制重设时。

  如果您的应用程序使用 SQL Server CE,也会发生类似的过程。Visual Studio .NET 将检查目标平台以确认是否安装了 SQL Server CE 组件。如果 Visual Studio .NET 找不到这些组件,它将在运行应用程序之前自动复制并安装所需的 SQL Server CE 组件。

  当 Visual Studio .NET 确定应用程序所需的所有组件都存在后,会将您的应用程序复制到目标平台上并放置在项目配置中指定的目录中,然后启动。

  运行测试

  有多种方法可以运行应用程序测试:

  • 从 Visual Studio .NET 工具栏中,单击 Start(开始)按钮。
  • 从 Debug(调试)菜单中选择 Start(启动)或 Start without Debugging(启动而不调试)。
  • 按 F5 键(启动并进行调试)或 Ctrl + F5(启动而不调试)。
  在仿真器中进行测试

  仿真器在桌面计算机中提供了一种环境,可以模拟应用程序所用的设备平台的功能和操作。仿真器可以在没有设备或无法使用设备的情况下使用。

  请注意:在仿真器中进行测试有其不足之处。首先也是最主要的缺陷,仿真器是在桌面计算机上运行的,而桌面计算机上的处理资源比目标设备的处理资源多很多。这就会给您造成一种应用程序运行良好的错觉。另外,仿真器是通过键盘和鼠标输入的,而不是最终用户要使用的笔针。如果没有意识到这些不同之处,很有可能您创建的应用程序在仿真器中易于使用,而在设备上却很难使用。最后,仿真器也只提供了“类似于”设备的环境,而不是完全相同的环境。各种仿真器也不尽相同。

  仿真器的要求

  除非运行仿真器的开发计算机建立了网络连接,否则随 Visual Studio .NET 一起提供的仿真器将不能运行。如果计算机没有建立网络连接,仍然可以通过安装 Microsoft 环回网络适配器来使用仿真器。这种适配器可以模拟网络连接,并可以成功地骗过仿真器而使其运行。

在 Windows 2000 下安装环回适配器

  在 Windows 2000 下,安装 Microsoft 环回网络适配器的过程如下:

  1. 在控制面板中,单击“添加/删除硬件”。
  2. 在“添加/删除硬件向导”的“欢迎”页面上,单击“下一步”。
  3. 单击“添加/排除设备故障”,然后单击“下一步”。系统扫描即插即用设备时,安装过程将暂停。
  4. 在“选择一个硬件设备”页面上,单击“添加新设备”,然后单击“下一步”。
  5. 在“查找新硬件”页面上,单击“否,我想从列表选择硬件”,然后单击“下一步”。
  6. 在“硬件类型”页面上,单击“网卡”,然后单击“下一步”。在生成网络适配器列表时,将有短暂的延迟。
  7. 在“选择网卡”页面上,先在“制造商”列表框中单击“Microsoft”,然后在“网卡”列表框中单击“Microsoft Loopback Adapter”。单击“下一步”按钮。
  8. 在“开始硬件安装”页面上,单击“下一步”。即开始安装环回适配器。
  在 Windows 2000 下配置环回适配器

  与任何网络适配器一样,安装环回适配器只是完成了整个过程的一半,您还需要配置新的适配器。请执行以下步骤来配置环回适配器:

  1. 在“开始”菜单上单击“设置”,指向“网络和拨号连接”,然后双击“本地连接”。将显示“本地连接状态”对话框。
  2. 单击“属性”。将显示“本地连接属性”窗口。
    注意:请确保处理的是正确的连接。此对话框的“连接时使用”字段应显示“Microsoft Loopback Adapter”。
  3. 选择“Internet 协议 (TCP/IP)”,然后单击“属性”。将显示“Internet 协议”窗口。
  4. 配置 IP 地址属性。
  5. 单击“确定”关闭“Internet 协议”窗口。
  6. 单击“确定”关闭“本地连接属性”窗口。
  7. 单击“关闭”关闭“本地连接状态”窗口。
  将文件移到仿真器中

  Windows CE / Pocket PC 仿真器的早期版本提供了两种截然不同的创建仿真器环境的方法。第一代仿真器使用封闭环境,该环境无法从开发计算机上的基于 Windows 的标准文件管理工具进行访问。仿真器上所需的任何文件都必须使用 eMbedded Visual Tools 中的专用实用程序在仿真器中创建或复制到仿真器中。

  第二代仿真器提供了较开放的环境,该环境可以使用常用工具(如文件资源管理器)进行访问。该仿真器的目录结构存在于开发计算机上的子目录中。向仿真器或从仿真器复制文件只需要简单的拖放操作即可完成。

  Visual Studio .NET 中的仿真器把我们带回到了封闭的仿真器环境中。更麻烦的是,Visual Studio .NET 与 eMbedded Visual Tools 的早期版本不同,它不包括仿真器文件管理工具。这就要求您自己想出一些有创造性的解决方法。

  在仿真器环境中提供文件一般有三种方法。一种方法是通过仿真器上运行的应用程序创建文件。这种方法在此就不再赘述了。您可以使用标准的 .NET 编程技术创建文本、XML 或数据库文件。

  另外两种方法,即向项目添加文件以及从共享中复制文件,则需要在此作进一步的解释。

  向项目添加文件

  将文件移到仿真器中的最简单方法是将它们包括为项目的一部分。使用这种方法的一个优点是,当在仿真器上执行强制重设时,只需重建项目即可恢复测试。

  使用此方法的过程如下:

  1. 在 Visual Studio .NET 中打开项目。
  2. 在 Project(项目)菜单上,单击 Add Existing Item...(添加现有项...)。
  3. 在 Add Existing Item(添加现有项)对话框中,选择要复制到仿真器中的文件。
  4. 单击 Open(打开)。该文件即被添加到项目中。
  5. 在 Solution Explorer(解决方案资源管理器)窗口中,选择添加的文件。
  6. 在 Properties(属性)窗口中,验证 Build 属性是否已设置为 Content(内容)。配置为 Content(内容)的项将作为单个文件复制到目标设备中。配置为 Embedded Resource(内嵌资源)的项则是应用程序可执行文件的一部分。
  7. 建立项目。文件将随应用程序一起复制到设备中。
  从共享复制文件

  第二种方法提供了更大的灵活性,而且几乎不需要额外工作。该方法使用 Pocket PC 操作系统内置的网络文件共享功能,而这个功能随后是通过 Visual Studio .NET 中包括的仿真器提供的。

  此方法分为两个部分:在开发计算机上设置共享,然后通过仿真器的 File Explorer(文件资源管理器)访问共享。

  设置共享需要两个配置。首先,必须配置计算机以启用共享。其次,必须配置要共享的文件夹。

  在运行 Windows 2000 的开发计算机上启用共享
  1. 在“开始”菜单上单击“设置”,指向“网络和拨号连接”,然后双击“本地连接”。
  2. 在“本地连接状态”窗口中,单击“属性”。
  3. 在“本地连接属性”窗口中,启用“Microsoft 网络的文件和打印机共享”。
  4. 单击“确定”关闭“本地连接属性”窗口。
  5. 单击“关闭”关闭“本地连接状态”窗口。

  此时,您已经完成对开发计算机的配置,可以进行文件共享了。下一步,即共享要复制到仿真器中的文件所在的文件夹。

  在 Windows 2000 下共享文件夹
  1. 启动 File Explorer(文件资源管理器)。
  2. 在 File Explorer(文件资源管理器)中,在要共享的文件夹上单击鼠标右键,然后单击 Properties(属性)。
  3. 在 Properties(属性)窗口中,单击 Sharing(共享)选项卡。
  4. 在 Sharing(共享)选项卡上,选择共享文件夹,并提供共享名称。
  5. 单击 OK(确定)关闭 Properties(属性)窗口。

  现在您已经完成对开发计算机的配置,可以复制文件了。首先需要将所有要复制到仿真器中的文件放置到共享文件夹中。然后执行以下步骤,将文件移到仿真器中:

  1. 启动仿真器。
  2. 从仿真器中启动 File Explorer(文件资源管理器)。
  3. 在 File Explorer(文件资源管理器)菜单上,单击 Open(打开)。
  4. 屏幕上将显示 Open(打开)对话框。按照 \\mycomputer\myshare 格式指定开发计算机的名称以及您创建的共享名称。
  5. 点击 OK(确定)。

    根据开发计算机上的安全设置,计算机可能会在允许访问共享之前提示您输入用户名和密码。

  此时,您已经可以向/从开发计算机和仿真器上的共享中复制文件了。

注意:使用设备时,用这些方法复制文件的效果是一样的,但存在一个已知问题。默认情况下,Pocket PC 设备具有设备名“Pocket PC”。除非更改此名称,否则将不能访问共享。
  在设备上进行测试

  在设备上进行测试,可以使您获得应用程序运行情况的第一手经验。使用 Visual Studio .NET,可以在通过 USB、串行端口或以太网连接到开发计算机的设备上进行测试。

注意:请使用以太网将设备连接到开发计算机。这是目前最快、最简单的测试和调试方法。
  部署到设备

  您可以选择使用以下任一方法部署到设备上:

  • 在 Visual Studio .NET 工具栏上,从 Deployment Device(部署设备)组合框中选择 Pocket PC Device(Pocket PC 设备)。
  • 在 Project Properties(项目属性)对话框的 Device(设备)页面下,从 Deployment Device(部署设备)组合框中选择 Pocket PC Device(Pocket PC 设备)。
  • 在 Property(属性)窗口中,将项目的 Deployment Device(部署设备)属性设置为 Pocket PC Device(Pocket PC 设备)。

  调试应用程序

  Visual Studio .NET IDE 提供的调试环境是非常可靠的。使用该调试环境,您可以暂停应用程序、查看其内部工作情况、修改代码、检查值并有计划地单步执行应用程序。

  调试功能中最重要的部分是 Visual Studio .NET IDE 中的 Debug(调试)菜单。在此菜单中,您可以启动和停止调试会话、设置断点并在调试方式下浏览应用程序。

注意:断点是指应用程序中遇到它时要暂停或中断执行的一行代码。

  Visual Studio .NET 使您能够方便地从开发计算机上远程调试运行在设备或仿真器上的应用程序。可以使用 Command(命令)窗口输入语句,查询并设置变量,执行代码行及其他类似的任务。

注意:为了优化调试环境,请使用以太网将设备连接到计算机。
  部署应用程序

  安装 .NET Framework 精简版应用程序的方法与其他 Windows 应用程序使用的方法类似。应用程序的安装通常使用 Cabinet 文件。Cabinet 文件更常用的名称是“CAB”文件,该名称源于其 .cab 文件扩展名。CAB 文件可用于两个目的:1) 压缩并存储文件以便轻松地发布;2) 确保应用程序需要的所有文件和设置都得到了正确处理。

  要求

  使用 Visual Studio .NET 建立的应用程序要求目标设备上有 .NET Framework 精简版。另外,如果应用程序使用 SQL Server CE,您也需要安装 SQL Server CE 组件。

  您的安装例程需要考虑到所有这些内容。可能需要包括多个 CAB 文件:一个用于应用程序,一个用于 .NET Framework 精简版和 SQL Server CE CAB。

  创建 CAB 文件

  为应用程序创建 CAB 文件的最简单方法是让 Visual Studio .NET 完成所有的工作。Visual Studio .NET 提供的功能之一是 IDE 中的一个用于生成 CAB 文件的菜单项。

  为应用程序创建 CAB 文件
  1. 在 Visual Studio .NET 中打开应用程序项目。
  2. 从 Solutions Configuration(解决方案配置)下拉组合框中选择 Release(发行),如图 13 所示。

    图 13:设置解决方案配置

  3. 在 Build(生成)菜单上,单击 Build CAB File(生成 CAB 文件),如图 14 所示。
  4. 在创建应用程序的过程中,将显示几个命令窗口。当这些窗口都从屏幕上消失后,CAB 文件即创建完成。
    注意:不会显示任何告诉您 CAB 文件已生成的消息或确认。当最后一个命令窗口关闭后,将返回到 Visual Studio .NET 界面。

    图 14:Build CAB File(生成 CAB 文件)菜单项

  CAB 文件输出

  此 CAB 生成过程的输出将保存在应用程序目录下的一个目录中。您可以在子目录 \bin\release 下找到每个 CAB 文件。图 15 显示了此层次结构的一个示例。

图 15:通过 Visual Studio .NET 生成的 CAB 文件的位置

  在图 15 所示的示例中,生成了几个 CAB,每个目标平台处理器类型一个 CAB 文件。从这个图形中可以看到四个 CAB:StrongArm、MIPS、Sb 和 X86 处理器类型各一个。这是因为开发设备是 Pocket PC,它支持这四种处理器类型。

  此时,可以将相应的 CAB 文件复制到目标设备上,打开设备上的 File Explorer(文件资源管理器)并点击 CAB 文件,以便安装应用程序。

注意:请记住,为了确保应用程序能够运行,您需要安装 .NET Framework 精简版;如果需要,还要安装 SQL Server CE。
  创建桌面安装程序

  如果要从桌面计算机(通过插接托架连接到设备)上安装应用程序,那么安装过程会复杂些。在这种情况下,需要两个安装程序,一个用于台式计算机,一个用于设备。设备安装程序是 CAB 文件。桌面安装程序是一个可执行程序,有两个功能。首先,将 CAB 文件复制到桌面计算机上。其次,启动应用程序管理器 (CeAppMgr.exe)。然后,应用程序管理器负责将 CAB 文件复制到设备上,以及启动安装。

  应用程序管理器处理设备应用程序的添加和删除操作,以及从启动安装的计算机中删除应用程序文件。使用 .INI 文件为应用程序管理器提供安装说明。

  桌面计算机的安装程序可由任何可以将 CAB 文件复制到计算机,然后启动应用程序管理器的应用程序创建。InstallShield(英文)和 Wise(英文)这两家公司提供了包含此功能的商业级安装开发软件包。

  Spb Software House(英文)提供了名为 EZSetup 的免费安装产品。虽然此应用程序不象 InstallShield 和 Wise 那样强大,但对于大多数安装过程已经足够。

注意:如果要自己编写桌面计算机的安装程序,则需要找到应用程序管理器在安装计算机上的位置。应用程序管理器的全名和完整路径存储在 HKLM\software\Microsoft\Windows\CurrentVersion\App Paths\CEAppMgr.exe 注册表值中。
  小结

  .NET Framework 精简版为开发人员提供了一种创建可靠移动应用程序的强大工具。它使您能够将现有的 .NET 技术应用到 Pocket PC 和 Windows CE .NET 设备应用程序的创建过程中。

  .NET Framework 精简版是 .NET Framework 的子集。虽然其外观和功能与 .NET Framework 相似,但学习如何在 .NET Framework 精简版下编程还需要花费一定的时间和精力。您需要了解 Windows CE 设备的局限性,还要理解与创建移动应用程序相关的要求。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有