Windows 窗体集还为 Visual Basic 开发者提供了许多新功能,例如可视化继承、改进的本地化和访问支持、自动调整窗体大小和就地菜单编辑器。
升级向导
将 Visual Basic 窗体升级为 Windows 窗体。
PrintForm 方法
Visual Basic 6.0
PrintForm 方法将 Form 对象的图象一个字节一个字节地发送至打印机。但是,此打印功能在某些窗体中无法正常工作。
Visual Basic.NET
在 Windows 窗体中,Visual Basic.NET 采用的打印框架使您可以快速生成复杂的打印文档。它还包括内置的“打印预览”对话框。
升级向导
PrintForm 方法调用标记有升级错误。您可以使用新的打印框架创建打印文档,甚至可以拍下应用程序窗口的屏幕快照并进行打印。
Circle、Cls、PSet、Line 和 Point 方法
Visual Basic 6.0
通过 Circle、Cls、PSet、Line 和 Point 方法,您可以在窗体中绘图,也可以清除这些图象。
Visual Basic.NET
Windows 窗体具有一套新的图形命令,用于替换 Circle、Cls、PSet、Line 和 Point。Windows 窗体包是在 GDI+ 的基础上构建的。GDI+ 是功能丰富的二维文字和图象处理图形库,现在可以直接在 Visual Basic.NET 中使用。在以前的版本中,如果不通过 Declare 语句和 GDI API,Visual Basic 程序员无法使用这些功能。虽然这一转变比较大,但是 GDI+ 的灵活性和强大功能让程序员能够快速开发应用程序,而使用以前版本的 Visual Basic 将会花费多得多的工作量。
升级向导
对这些方法的调用标记有升级错误。您可以在 System.Drawing 中记下使用 GDI+ 类的图形调用。
Name 属性
Visual Basic 6.0
Name 属性返回代码中使用的名称以识别窗体、控件或数据访问对象。在运行时为只读。
Visual Basic.NET
在运行时 Windows 窗体不支持窗体和控件的 Name 属性。如果需要迭代 Controls 集合以查找某一名称的控件,您可以使用 .NET 框架的 System.Reflection 类进行查找。
升级向导
控件的 Name 属性将标记有升级错误。
Caption 属性
Visual Basic 6.0
某些控件(例如 Label)具有 Caption 属性,用于确定在控件中或控件旁边显示的文字。其他控件(例如 TextBox)具有 Text 属性,用于确定控件中包含的文字。
Visual Basic.NET
在 Windows 窗体中,对于所有控件,用于显示控件中文字的属性均统一称为 Text。这简化了控件的使用。
升级向导
将控件的 Caption 属性变为 Text。
Tag 属性
Visual Basic 6.0
Tag 属性可以返回或设置用于存储程序所需额外数据的表达式。
在 Visual Basic 6.0 中无法扩展内置控件,所以 Tag 属性是必需的。
Visual Basic.NET
在 Windows 窗体中,您可以使用继承来扩展内置控件,并添加自己的属性。将继承作为工具使用明显使内置控件更加灵活。您不仅可以根据需要添加任意多种属性,还可以将这些属性设为强属性。
升级向导
兼容库中的 Windows 窗体扩展程序 Tag 控件用于提供相同的功能。
ScaleMode 属性
Visual Basic 6.0
ScaleMode 属性返回或设置一个值,以在使用图形方法或定位控件时表明对象的坐标度量单位。
Visual Basic.NET
Windows 窗体始终使用象素作为度量单位,简化了窗体布局。
此外,Windows 窗体使用更好的方法来调整大小。AutoScaleBaseSize 属性根据屏幕的分辨率 (dpi) 和使用的字体大小自动调整缩放比例。
升级向导
使用“twip”(缇)(Visual Basic 6.0 中 ScaleMode 的默认设置)的代码将完全升级。如果 ScaleMode 为非缇,您将遇到调整大小方面的问题。
有关该主题的全面说明,请参阅白皮书《准备将 Visual Basic 6.0 应用程序升级到 Visual Basic.NET》(英文)。
字体
Visual Basic 6.0
窗体和控件可以使用任何 Windows 字体。
Visual Basic.NET
窗体和控件只能使用 TrueType 或 OpenType 字体。使用这些类型的字体可以解决不同操作系统版本及其本地化版本之间的许多不一致性问题。这些字体还具有不依赖设备分辨率和反走样等功能。
升级向导
如果在应用程序中使用非 TrueType 字体,这些字体将变为默认的 Windows 窗体字体,但其格式(大小、粗体、斜体和下划线)将会丢失。
Screen.MousePointer 属性
Visual Basic 6.0
Screen 对象的 MousePointer 属性可以返回或设置一个值,以表明运行时鼠标在应用程序窗体外部显示的鼠标指针类型。
Visual Basic.NET
如果鼠标指针位于应用程序内部的窗体中,则可以进行操作;当其位于应用程序外时则不能。在今后的版本中我们将继续完善其功能。
升级向导
使用 Screen.MousePointer 的语句标记有升级错误。
Timer.Interval 属性
Visual Basic 6.0
Timer 控件的 Interval 属性返回或设置 Timer 事件调用之间的毫秒数。如果设置为 0,则禁用 Timer 控件。Enabled 属性还用于确定计时器是否在运行。这将引起混乱,因为即使 Enabled 属性为 True,如果时间间隔为 0,仍不能启用计时器。
Visual Basic.NET
Interval 属性表明计时器刻度之间的时间(以毫秒为单位)。此属性不能设置为 0。Enabled 属性指定计时器是否在运行。这一方式更加直接,可以简化 Timer 对象的编码。
升级向导
如果 Timer.Interval 设置为 0,升级向导能够检测到这一情况,并为 Timer.Interval 标记升级错误。
建议您在 Visual Basic 6.0 应用程序中使用 Timer.Enabled,因为此属性可以顺利升级。
控件数组
Visual Basic 6.0
控件数组是一组共享同一名称和类型的控件。它们也共享同一事件过程。控件数组至少有一个元素,只要您的系统资源和内存允许,它可以有任意多个元素。同一控件数组的元素具有各自的属性设置。
Visual Basic.NET
Windows 窗体体系结构可以处理使用控制数组的多种方案。例如,在 Windows 窗体中可以通过单一事件句柄处理多个控件的多个事件。
升级向导
兼容库中的“控件数组 Windows 窗体”扩展程序控件提供了这种功能。
Menu 控件
Visual Basic 6.0
Menu 控件代表菜单树中的各个项目。同一 Menu 控件实例可以同时在主菜单或上下文菜单中使用。
Visual Basic.NET
MenuItem 控件代表菜单树中的各个项目。MenuItem 控件可以添加至 MainMenu 项目或 ContextMenu 项目,但不能同时添加。要在 MainMenu 对象和 ContextMenu 对象中共享菜单,可以在 MenuItem 中使用 CloneMenu 方法创建菜单副本。
升级向导
使用上下文菜单的代码将标记有升级错误。可以使用 MenuItem.CloneMenu 创建 MainMenu 项目的副本,用作 ContextMenu 项目。
OLE 容器控件
Visual Basic 6.0
OLE 容器控件使您可以将 OLE 对象添加至窗体。
Visual Basic.NET
Visual Basic.NET 中没有 OLE 容器控件。如果需要与 OLE 容器控件相当的控件,可以将 WebBrowser 控件添加至窗体,并将其用作 OLE 容器控件。
升级向导
在升级报告中报告此升级错误,并在窗体中放置不受支持控件的占位符。
Image 控件
Visual Basic 6.0
Image 和 PictureBox 控件均可显示位图、图标、图元文件、增强型图元文件、JPEG 或 GIF 文件的图形。
Visual Basic.NET
Visual Basic.NET 中的 PictureBox 控件代替了 Visual Basic 6.0 中的 PictureBox 和 Image 控件。Windows 窗体中的 PictureBox 控件还支持动态 GIF 文件。但是,如果您需要一个简单方案,以便在窗体中绘制图象,您也可以不使用窗体的 OnPaint 事件,而使用 DrawImage 方法。
升级向导
Image 控件变为 PictureBox 控件。
Line 和 Shape 控件
Visual Basic 6.0
Line 控件显示水平线、垂直线或对角线。Shape 控件显示矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形。
Visual Basic.NET
System.Drawing 中的 GDI+ 类代替了 Line 和 Shape 控件。要在窗体中绘制各种形状的图形,请不要使用 OnPaint 事件,而使用 GDI+ Draw 方法绘制圆、正方形等各种形状。
升级向导
水平和垂直 Line 控件变为 Label 控件(没有文字,高度或宽度设置为 1)。对角线控件在升级报告中报告有升级错误,并在窗体中放置不受支持控件的占位符。
矩形和正方形 Shape 控件变为 Label 控件。其他 Shape 控件在升级报告中报告有升级错误,并在窗体中放置不受支持控件的占位符。
Windowless 控件
Visual Basic 6.0
轻便控件,有时称为无窗口的控件,与常规控件最显著区别是:没有窗口句柄(hWnd 属性)。因此,它们使用的系统资源较少。您可以在设计时将 Windowless 属性设置为 True 以创建轻便用户控件。轻便用户控件只能包含其他轻便用户控件。并非所有容器均支持轻便控件。
Visual Basic.NET
在 Windows 窗体中,大多数无窗口控件默认在窗口中使用。使用无窗口控件的主要优点是:当窗体中有非常大量的控件时,可以减少资源消耗(窗口句柄)。这仅限于 Windows 9x。Microsoft Windows NT? 和 Microsoft Windows 2000 没有这种资源限制。
使用无窗口控件也有缺点(如分层等布局问题),但 Microsoft 认识到了无窗口控件的作用,并将发布示例来展示如何在 Windows 窗体中获得类似效果。
升级向导
无需特别处理。
Clipboard
Visual Basic 6.0
Clipboard 对象提供了对系统剪贴板的访问。
Visual Basic.NET
Clipboard 类提供了在系统剪贴板上放置数据和从其上检索数据的方法。新的 Clipboard 类提供了更多功能,并且支持的剪贴板格式比 Visual Basic 6.0 Clipboard 对象更多。对象模块经过了重新构建以支持这些功能。
升级向导
由于对象模块之间的差异,现有的剪贴板代码无法自动升级。Clipboard 语句将标记有升级错误。
动态数据交换
Visual Basic 6.0
某些控件具有支持动态数据交换 (DDE) 会话的属性和方法。
Visual Basic.NET
Windows 窗体不支持内置 DDE。
升级向导
DDE 属性和方法标记有升级警告。
Web 应用程序
WebClass
Visual Basic 6.0
WebClass 是驻留在 Web 服务器上的 Visual Basic 组件,能够响应浏览器的输入。WebClass 通常包括 WebItems,用于为浏览器和公开事件提供内容。
Visual Basic.NET
Web 窗体具有 .NET 框架功能,可以用来为 Web 应用程序创建基于浏览器的用户界面。Visual Basic.NET 具有“所见即所得”的设计器,可以使用工具箱中的控件创建图形 Web 窗体。这样,Web 用户界面开发与 Windows 开发具有同样的形式。此外,当创建项目后,Internet Information Services (IIS) 服务器不必停止并重新启动即可开始部署新内容,而使用 WebClass 则不能。
升级向导
WebClass 将升级为 Web 窗体。所有状态存储调用均标记有升级警告。可以重新编写这些代码,以使用 ASP.NET 状态管理的优势。
您也可以选择继续使用 Visual Basic 6.0 中的 WebClass 应用程序,从 Visual Basic.NET Web 窗体中定位至 WebClass 和 WebForm,等等。
ActiveX 文档和 DHTML 应用程序
Visual Basic 6.0
ActiveX 文档在 Internet 浏览器窗口中显示,并提供内置的视区滚动、超链接和菜单协商。DHTML 应用程序包含 DHTML 页面和客户端 ActiveX DLL。
Visual Basic.NET
Web 窗体通过采用 HTML 以支持多种应用程序。通过使用寄存在浏览器中的 Windows 窗体控件或已下载的“安全 Windows 窗体”EXE,它能够以更安全的方式支持多种应用程序。此代码在安全沙箱中运行,因此不会对用户的计算机造成损害。
升级向导
虽然 ActiveX 文档和 DHTML 应用程序无法直接升级,您仍可以在 ActiveX 文档、DHTML 应用程序和 Web 窗体之间切换。
数据
ADO、RDO 和 DAO 代码
Visual Basic 6.0
ActiveX 数据对象 (ADO)、远程数据对象 (RDO) 和数据访问对象 (DAO) 用于连接和断开数据访问。
Visual Basic.NET
ADO.NET 提供了断开数据访问的其他类。与用于分布式应用程序的较早版本 ADO 相比,这些类提供了更好的性能和可伸缩性。它们也使 XML 数据与数据库数据的集成更加简单。
升级
Visual Basic.NET 代码中仍然可以使用 ADO、RDO 和 DAO。
ADO、RDO 和 DAO 数据绑定
Visual Basic 6.0
Visual Basic 窗体中的控件可以绑定到 ActiveX? 数据对象 (ADO)、远程数据对象 (RDO) 和数据访问对象 (DAO) 数据源。
Visual Basic.NET
ADO.NET 为 Windows 窗体控件提供了读/写数据绑定,为 Web 窗体提供了只读数据绑定。
升级向导
ADO 数据绑定升级为新的 ADO.NET 数据绑定。但是,RDO 和 DAO 数据绑定无法升级,将会在升级报告中报告升级错误。
IDE
“立即”窗口
Visual Basic 6.0
在设计模式的“立即”窗口,您可以运行部分代码,而不必通过其 Startup 对象启动整个应用程序。例如,可以显示窗体、调用模块过程以及与全局变量交互。这是因为 Visual Basic 6.0 是从代码的内存映象运行,而不是调试运行时使用的已创建输出。
Visual Basic.NET
可以从设计模式的“命令”窗口中执行 IDE 命令,但是不能运行应用程序的各个部分。这是因为 Visual Basic.NET 的运行和调试所使用的是运行时的实际输出。这种形式的调试最精确地再现了运行时的行为。
IDE 和项目扩展性
Visual Basic 6.0
只有 Visual Basic 6.0 支持 Visual Basic 6.0 集成开发环境 (IDE) 扩展模型。
Visual Basic.NET
对于 Visual Studio.NET 中的所有工程类型,新的 IDE 扩展模型是通用的。这使得创建与多种不同类型工程协作的外接程序更加简单。Visual Basic 工程系统扩展模型也可以与 C# 共享,因此工程的特定功能(例如添加引用或更改工程属性)在两种语言中的用法相同。
Visual Studio.NET 代码模型也给扩展级编写者提供了公共对象模型,以编写跨不同语言工程使用的代码。Visual Basic 支持通过代码模型读取代码。要编写代码,您可以从模型中取出一个插入点,然后写入 Visual Basic 语法。