更新:2007 年 11 月
Visual Basic 6.0 中的 Form 对象在 Visual Basic 2008 中被 Form 类所取代。某些属性、方法、事件和常量的名称是不同的,在某些情况下,行为也有所不同。
概念差异
激活和停用事件
在 Visual Basic 6.0 中,Activate 和 Deactivate 事件仅在窗体间切换时引发。
在 Visual Basic 2008 中,在应用程序间切换时也会引发 Activated 和 Deactivate 事件。
QueryUnload 事件
在 Visual Basic 6.0 中,QueryUnload 事件采用两个参数(Cancel 和 UnloadMode)。通过查询 UnloadMode 参数,可以确定卸载窗体的原因,然后可取消该操作(如有必要)。
在 Visual Basic 2008 中,QueryUnload 事件替换为 FormClosing 事件;UnloadMode 替换为 CloseReason。
Picture 属性
在 Visual Basic 6.0 中,如果位图比窗体小,分配给 Picture 属性的图像则显示在窗体左上角。
在 Visual Basic 2008 中,Picture 属性替换为 BackgroundImage 属性;如果分配给 BackgroundImage 属性的图像比窗体小,默认情况下会平铺该图像。
Moveable 属性
在 Visual Basic 6.0 中,窗体的 Moveable 属性可以设置为 False,以防止用户在运行时移动窗体。Visual Basic 2008 中的 Windows 窗体没有等效属性。
尽管这通常被认为是不理想的用户界面设计,但在 Visual Basic 2008 中可以实现类似的行为,方法是将 FormBorderStyle 属性设置为 None,然后将 ControlBox 属性设置为 False。
ValidateControls 方法
在 Visual Basic 6.0 中,ValidateControls 方法用于强制执行关闭窗体时具有焦点的控件的 Validate 事件;如果 Validate 事件失败,则引发错误。
在 Visual Basic 2008 中,ValidateControls 方法替换为 Validate 方法,后者返回 True 或 False。
MDI 窗体的鼠标事件
在 Visual Basic 6.0 中,MDI 窗体支持鼠标事件。在 Visual Basic 2008 中,因为 MDI 窗体没有可接收鼠标事件的工作区,所以 MDI 窗体不再支持 Click、MouseDown、MouseMove 和 MouseUp 事件。
窗体对象的代码更改
下面的示例演示 Visual Basic 6.0 与 Visual Basic 2008 在编码方法方面的差异。
确定窗体关闭原因的代码更改
下面的代码可帮助确定窗体关闭的原因,并确定如何根据原因操作。在 Visual Basic 6.0 示例中,使用的是 QueryUnload 事件的 UnloadMode 参数。在 Visual Basic 2008 示例中,该参数替换为 FormClosing 事件处理程序中的 CloseReason 参数。
' Visual Basic 6.0
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If UnloadMode = vbFormControlMenu Then
        Cancel = True
    End If
End Sub
' Visual Basic
Private Sub Form1_FormClosing(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles _
MyBase.FormClosing
    If e.CloseReason.UserClosing Then
        e.Cancel = True
    End If
End Sub
窗体关闭时验证控件的代码更改
下面的代码演示窗体关闭时如何强制验证具有焦点的控件。此示例假定 TextBox 控件的 CausesValidation 属性设置为默认值 True。
' Visual Basic 6.0
Private Sub Text1_Validate(Cancel As Boolean)
    If Text1.Text = "" Then
        MsgBox ("Please enter a name")
        Cancel = True
End If
Private Sub Form_Unload(Cancel As Integer)
    OnError GoTo ERR_HANDLER
    Me.ValidateControls
ERR_HANDLER:
    ' If validation failed cancel the Unload event.
    If Err.Number = 380 Then
        Cancel = True
    End If
End Sub
' Visual Basic
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As _
System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
    If TextBox1.Text = "" Then
        MsgBox("Please enter a name")
        e.Cancel = True
    End If
End Sub
Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e _
As System.Windows.Forms.FormClosingEventArgs) Handles _
MyBase.FormClosing
    ' If validation failed cancel the Closing event.
    If Me.Validate = False Then
        e.Cancel = True
    End If
End Sub
窗体对象属性、方法和事件的等效项
下表列出了 Visual Basic 6.0 属性、方法和事件,以及它们的 Visual Basic 2008 等效项。具有相同的名称和行为的属性、方法和事件未予列出。如果适用,常量在属性或方法的下面缩进。除非另有说明,否则所有的 Visual Basic 2008 枚举都映射到 System.Windows.Forms 命名空间。
根据需要提供了解释行为差异的主题链接。如果 Visual Basic 2008 中没有直接等效项,则提供指向介绍其他替代项的主题的链接。
窗体属性
| Visual Basic 6.0 | Visual Basic 2008 等效项 | ||
|---|---|---|---|
| Appearance | 新的实现。有关更多信息,请参见 Appearance 和 BorderStyle 属性(针对 Visual Basic 6.0 用户)。 | ||
| AutoRedraw | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| BackColor | 
 | ||
| BorderStyle | |||
| Caption | |||
| ClipControls | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Controls | 
 | ||
| Count | 
 | ||
| CurrentX CurrentY | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| DrawMode DrawStyle DrawWidth | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| FillColor FillStyle | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Font FontBold FontItalic FontName FontSize FontStrikethrough FontUnderline | 
 | ||
| ForeColor | 
 | ||
| HasDC | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| HDC | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Height | 
 | ||
| HelpContextID | 新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 | ||
| HWnd | |||
| Image | 新的实现。Visual basic 6.0 中的 Image 属性返回位图的句柄;Visual Basic 2008 中的图像没有句柄。 | ||
| Left | 
 | ||
| LinkMode LinkTopic | 无等效项。有关更多信息,请参见动态数据交换(针对 Visual Basic 6.0 用户)。 | ||
| MaxButton | |||
| MDIChild | 
 | ||
| MinButton | |||
| MouseIcon | 新的实现。有关更多信息,请参见无法设置自定义 MousePointer。 | ||
| MousePointer | 有关常量的列表,请参见 MousePointer(针对 Visual Basic 6.0 用户)。 | ||
| Moveable | 新的实现。有关更多信息,请参见 可移动属性(针对 Visual Basic 6.0 用户)。 | ||
| Name | |||
| NegotiateMenus | 新的实现。有关更多信息,请参见 菜单对象(针对 Visual Basic 6.0 用户)。 | ||
| OLEDropMode | 新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 | ||
| Palette PaletteMode | 新的实现。有关更多信息,请参见 调色板(针对 Visual Basic 6.0 用户)。 | ||
| Picture | 
 | ||
| RightToLeft: True False | Yes 枚举值 | ||
| ScaleHeight ScaleLeft ScaleMode ScaleTop ScaleWidth | 新的实现。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)。 | ||
| StartUpPosition: 0 – Manual 1 – CenterOwner 2 – CenterScreen 3 – Windows Default | Manual 枚举值 CenterParent 枚举值 CenterScreen 枚举值 | ||
| Top | 
 | ||
| WhatsThisButton | 
 | ||
| WhatsThisHelp | 新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 | ||
| Width | 
 | 
Form 方法
| Visual Basic 6.0 | Visual Basic 2008 等效项 | ||
|---|---|---|---|
| Circle | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Cls | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Line | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Move | 
 | ||
| OLEDrag | 新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 | ||
| PaintPicture | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Point | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| PopupMenu | 新的实现。有关更多信息,请参见 菜单对象(针对 Visual Basic 6.0 用户)。 | ||
| PrintForm | 新的实现。有关更多信息,请参见 打印更改(针对 Visual Basic 6.0 用户)。 | ||
| Pset | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| Scale ScaleX ScaleY | 新的实现。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)。 | ||
| SetFocus | |||
| Show | |||
| TextHeight | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| TextWidth | 新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)。 | ||
| ValidateControls | 
 | ||
| WhatsThisMode | 新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)。 | ||
| ZOrder: 0 – vbBringToFront 1 - vbSendToBack | BringToFront 或 SendToBack 函数 | 
窗体事件
| Visual Basic 6.0 | Visual Basic 2008 等效项 | ||
|---|---|---|---|
| Activate | 
 | ||
| Click | 
 | ||
| DblClick | |||
| Deactivate | 
 | ||
| DragDrop DragOver | 新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 | ||
| GotFocus | |||
| Initialize | New 方法 
 | ||
| LinkClose LinkError LinkExecute LinkOpen | 无等效项。有关更多信息,请参见动态数据交换(针对 Visual Basic 6.0 用户)。 | ||
| MouseDown | 
 | ||
| MouseMove | 
 | ||
| MouseUp | 
 | ||
| OLECompleteDrag OLEDragDrop OLEDragOver OLEGiveFeedback OLESetData OLEStartDrag | 新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)。 | ||
| QueryUnload | 
 | ||
| Terminate | Dispose 方法 
 | ||
| Unload | 
 | 
.gif) 说明:
说明: