VB 6 向VB.net转化中要注意的问题

来源:互联网 发布:linux 服务器增加路由 编辑:程序博客网 时间:2024/04/28 21:26

Visual Basic 6.0 应用程序的升级准备工作

尽管将 Visual Basic 6.0 应用程序升级到 Visual Basic .NET 的过程大部分是自动完成的,但还是可以通过进行一些少量的准备工作在很多方面优化升级。

遵循本主题中的建议,可以最大限度地减少,甚至在某些情况下,可以消除在将项目升级到 Visual Basic .NET 后所需的更改。多数情况下,这些建议只表示好的编程实施策略,但是,某些建议还标识了没有等效项的对象和方法以及在打算将项目升级到 Visual Basic .NET 时应慎用的对象和方法。

  • 一般性建议
  • 窗体和控件的注意事项
  • 数据建议
  • Web 结构建议

一般性建议

如果项目不在 Visual Basic 6.0 下编译并运行,项目将无法成功地升级,这一点应该很明显。建议将 Visual Basic 6.0 安装在将用于升级的计算机上。这样不仅使您得以测试应用程序,而且可确保所有必要的控件、组件和类型库在升级期间都是可用的。

Visual Basic .NET 使您可以升级 Visual Basic 6.0 项目;如果项目是用 Visual Basic 1 至 5 版编写的,则应先将其加载到 Visual Basic 6.0 中(选择升级 Microsoft ActiveX 控件),编译并保存该项目,然后再将其升级到 Visual Basic .NET。

窗体和控件的注意事项

Visual Basic .NET 有一种新的窗体包(Windows 窗体)。Windows 窗体同 Visual Basic 6.0 中的窗体包在很大程度上是兼容的;但是仍存在下文描述的一些主要差别:

  • Visual Basic .NET 不支持 OLE 容器控件;在 Visual Basic 6.0 应用程序中应避免使用此控件。
  • Visual Basic .NET 中没有形状控件。方形和矩形将被升级为标签,而椭圆和圆形无法被升级。应避免在应用程序中使用这些控件。
  • Visual Basic .NET 中没有线条控件。水平线和垂直线会被升级为标签。对角线不会被升级,应避免使用它们。
  • Visual Basic .NET 具有一组新的用于替换窗体方法 CircleCLSPSetLinePoint 的图形命令。由于新的对象模型与 Visual Basic 6.0 截然不同,因此无法将这些方法升级。
  • 对于 Timer 控件来说,将 Interval 属性设置为 0 不会禁用计时器;相反会将时间间隔重新设置为 1。在 Visual Basic 6.0 项目中,应将 Enabled 设置为 False 而不是将 Interval 设置为 0。

Visual Basic .NET 有两个菜单控件:MainMenuContextMenu,而 Visual Basic 6.0 有一个菜单控件,该控件可作为 MainMenuContextMenu 控件打开。所有菜单控件升级为一个单个的 MainMenu 组件,该组件包含每个菜单控件的 MenuItem;必须重新创建 ContextMenu 并删除多余的 MainMenu 控件。

  • Visual Basic .NET 不支持动态数据交换 (DDE)。
  • Visual Basic .NET 不支持 Form.PrintForm 方法。
  • 尽管 Visual Basic .NET 支持拖放功能,但其对象模型与 Visual Basic 6.0 中的对象模型有所不同。因此,无法将 Visual Basic 6.0 的拖放属性和方法升级。
  • .NET Framework 具有改进的 Clipboard 对象 (System.Windows.Forms.Clipboard),同 Visual Basic 6.0 的 Clipboard 对象相比,前者提供了更多的功能并支持更多的剪贴板格式。但是,由于对象模型之间的差异,无法将剪贴板语句自动升级。
  • Visual Basic .NET 在运行时不支持窗体和控件的 Name 属性;因此不应编写迭代 Controls 集合以查找具有特定名称的控件的代码(现在可通过使用 .NET System.Reflection 类获得此功能)。

数据建议

Visual Basic .NET 引入名为 ADO.NET 的 ADO 的增强版本,ADO.NET 为使用分布式应用程序中的数据进行了优化,在分布式应用程序中使用时提供的性能比 ADO 好。

DAO、RDO 和 ADO 仍可以在 Visual Basic .NET 的代码中使用,只需进行一些细微的修改(在此文档的语言部分中进行讲述)。但是,Visual Basic .NET 不支持到控件、数据控件或 RDO 用户连接的 DAO 数据绑定和 RDO 数据绑定。如果应用程序包含 DAO 或 RDO 数据绑定,则建议仍使用 Visual Basic 6.0,或者在将项目升级到 Visual Basic .NET 之前将 DAO 或 RDO 数据绑定升级到 ADO,因为 Windows 窗体中支持 ADO 数据绑定。有关如何在 Visual Basic 6.0 中将 DAO 或 RDO 升级到 ADO 的信息可在 Visual Basic 6.0 帮助中获得。

Web 结构建议

Visual Basic .NET 引入 ASP.NET(ASP 的增强版本)并且向结构添加 Web 窗体(使用类似 Visual Basic 的事件模型产生 Web 页的技术)。该结构基于服务器。

对基于 Web 的应用程序来说,符合 Microsoft 多层结构准则、使用 Active Server Page (ASP) 或使用用于业务逻辑关系的 Visual Basic 6.0 或 Visual C++ 6.0 的 COM 对象的应用程序最易于升级。ASP 在 Visual Basic .NET 中受到完全支持,并且可以使用 ASP、ASP.NET 和 Web 窗体继续扩展应用程序。可将 Visual Basic 6.0 和 Visual C++ 6.0 业务对象不经修改地使用,或升级到 Visual Studio .NET。

Webclass 在 Visual Basic .NET 中已不存在。现有的 Webclass 应用程序可以与 Visual Basic .NET Web 窗体和 ASP 应用程序交互操作;或者它们可以升级到 Web 窗体应用程序。

 
原创粉丝点击