Visual Basic 6.0 应用程序的升级准备工作
更新:2007 年 11 月
尽管将 Visual Basic 6.0 应用程序升级到 Visual Basic 2008 的过程大部分是自动完成的,但还是可以通过进行少量的准备工作在很多方面优化升级。
如果按照此主题中的建议进行操作,可以尽可能减少将项目升级到 Visual Basic 2008 之后需要执行的更改,在某些情况下甚至不需要执行任何更改。在大多数情况下,这些建议只表示好的编程做法;但是,某些建议还指出了没有等效项的对象和方法以及在打算将项目升级到 Visual Basic 2008 时应谨慎使用的对象和方法。
一般性建议
如果项目不在 Visual Basic 6.0 下编译并运行,项目将无法成功地升级,这一点应该很明显。建议将 Visual Basic 6.0 安装在将用于升级的计算机上。这样不仅使您得以测试应用程序,而且可确保所有必要的控件、组件和类型库在升级期间都是可用的。
Visual Basic 2008 使您可以升级 Visual Basic 6.0 项目;如果项目是用 Visual Basic 1 至 5 版编写的,则应先将其加载到 Visual Basic 6.0 中(选择升级 Microsoft ActiveX 控件),编译并保存该项目,然后将其升级到 Visual Basic 2008。
窗体和控件的注意事项
Visual Basic 2008 具有一个新的窗体包,即 Windows 窗体。Windows 窗体同 Visual Basic 6.0 中的窗体包在很大程度上是兼容的;但是仍存在下文描述的一些主要差别:
Visual Basic 2008 不支持 OLE 容器控件;在 Visual Basic 6.0 应用程序中应避免使用此控件。
Visual Basic 2008 中没有形状控件。方形和矩形将被升级为标签,而椭圆和圆形无法被升级。应避免在应用程序中使用这些控件。
Visual Basic 2008 中没有线条控件。水平线和垂直线会被升级为标签。对角线不会被升级,应避免使用它们。
Visual Basic 2008 具有一组新的图形命令,这些命令代替了 Form 方法 Circle、CLS、PSet、Line 和 Point。由于新的对象模型与 Visual Basic 6.0 截然不同,因此无法将这些方法升级。
对于 Timer 控件来说,将 Interval 属性设置为 0 不会禁用计时器;相反,会将时间间隔重新设置为 1。在 Visual Basic 6.0 项目中,应将 Enabled 设置为 False 而不是将 Interval 设置为 0。
Visual Basic 2008 具有两个菜单控件 — MenuStrip 和 ContextMenuStrip,而 Visual Basic 6.0 具有一个菜单控件,该菜单控件可作为 MainMenu 或 ContextMenu 控件打开。所有菜单控件都升级为单一 MenuStrip 组件,该组件包含每个菜单控件的 MenuItem;必须重新创建您的上下文菜单并删除多余的 MenuStrip 控件。
Visual Basic 2008 不支持动态数据交换 (DDE)。
Visual Basic 2008 不支持 Form.PrintForm 方法。
尽管 Visual Basic 2008 支持拖放功能,但其对象模型与 Visual Basic 6.0 中的对象模型有所不同。因此,无法将 Visual Basic 6.0 的拖放属性和方法升级。
Visual Basic 2008 具有一个改进的 Clipboard 对象 (My.Computer.Clipboard),与 Visual Basic 6.0 的 Clipboard 对象相比,它提供更多功能并支持更多剪贴板格式。但是,由于对象模型之间的差异,无法将剪贴板语句自动升级。
Visual Basic 2008 在运行时不支持窗体和控件的 Name 属性;因此,不应编写代码遍历 Controls 集合以查找具有某个名称的控件。(现在,使用 .NET FrameworkSystem.Reflection 类可实现此功能。)
数据建议
Visual Basic 2008 引入称为 ADO.NET 的 ADO 的增强版本,它为使用分布式应用程序中的数据进行了优化,在分布式应用程序中使用时提供的性能优于 ADO。
RDO 和 ADO 仍可用于 Visual Basic 2008 中的代码,只需经过一些细微的修改。但是,Visual Basic 2008 不支持将 DAO 和 RDO 数据绑定到控件、数据控件或 RDO 用户连接。如果应用程序包含 DAO 或 RDO 数据绑定,则建议仍使用 Visual Basic 6.0,或者在将项目升级到 Visual Basic 2008 之前将 DAO 或 RDO 数据绑定升级到 ADO,因为 Windows 窗体中支持 ADO 数据绑定。有关如何在 Visual Basic 6.0 中将 DAO 或 RDO 升级到 ADO 的信息可在 Visual Basic 6.0 帮助中获得。
Web 结构建议
Visual Basic 2008 引入了 ASP.NET(ASP 的增强版本)并且向结构中添加了 Web 窗体(使用类似于 Visual Basic 的事件模型生成网页的技术)。该结构基于服务器。
符合下列条件的基于 Web 的应用程序是最容易升级的:
遵从 Microsoft 多层结构指南。
使用 Active Server Page。
对业务逻辑使用 Visual Basic 6.0 或 Visual C++ 6.0 COM 对象。
Visual Basic 2008 中完全支持 ASP,并且您可以使用 ASP、ASP.NET 和 Web 窗体继续扩展应用程序。Visual Basic 6.0 和 Visual C++ 6.0 业务对象可以不经修改就直接使用,或者升级到 Visual Basic 2008。
Visual Basic 2008 中不再具有 Webclass。现有的 Webclass 应用程序可以与 Visual Basic 2008 Web 窗体和 ASP 应用程序交互操作,它们也可以升级到 Web 窗体应用程序。