窗体对象(针对 Visual Basic 6.0 用户)
更新: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 |
|