窗体对象(针对 Visual Basic 6.0 用户)

更新:2007 年 11 月

Visual Basic 6.0 中的 Form 对象在 Visual Basic 2008 中被 Form 类所取代。某些属性、方法、事件和常量的名称是不同的,在某些情况下,行为也有所不同。

概念差异

激活和停用事件

在 Visual Basic 6.0 中,Activate 和 Deactivate 事件仅在窗体间切换时引发。

在 Visual Basic 2008 中,在应用程序间切换时也会引发 ActivatedDeactivate 事件。

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

BackColor

说明:

颜色在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见颜色行为(针对 Visual Basic 6.0 用户)

BorderStyle

FormBorderStyle

Caption

Text

ClipControls

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

Controls

Controls

说明:

Visual Basic 2008 中的 Controls 集合存在一些差异。有关更多信息,请参见 Controls 集合(针对 Visual Basic 6.0 用户)

Count

Count

说明:

Visual Basic 2008 中的 Controls 集合存在一些差异。有关更多信息,请参见 适用于 Visual Basic 6.0 用户的 Windows 窗体控件

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

Font

说明:

字体在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见 Font 对象(针对 Visual Basic 6.0 用户)

ForeColor

ForeColor

说明:

颜色在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见颜色行为(针对 Visual Basic 6.0 用户)

HasDC

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

HDC

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

Height

Height, Size

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

HelpContextID

新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

HWnd

Handle

Image

新的实现。Visual basic 6.0 中的 Image 属性返回位图的句柄;Visual Basic 2008 中的图像没有句柄。

Left

Left

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

LinkMode

LinkTopic

无等效项。有关更多信息,请参见动态数据交换(针对 Visual Basic 6.0 用户)

MaxButton

MaximizeBox

MDIChild

MdiParent

说明:

Visual Basic 2008 中的 MDI 行为有所不同。有关更多信息,请参见 MDI(针对 Visual Basic 6.0 用户)

MinButton

MinimizeBox

MouseIcon

新的实现。有关更多信息,请参见无法设置自定义 MousePointer

MousePointer

Cursor

有关常量的列表,请参见 MousePointer(针对 Visual Basic 6.0 用户)

Moveable

新的实现。有关更多信息,请参见 可移动属性(针对 Visual Basic 6.0 用户)

Name

Name

NegotiateMenus

新的实现。有关更多信息,请参见 菜单对象(针对 Visual Basic 6.0 用户)

OLEDropMode

新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)

Palette

PaletteMode

新的实现。有关更多信息,请参见 调色板(针对 Visual Basic 6.0 用户)

Picture

BackgroundImage

说明:

在 Visual Basic 6.0 中,Picture 显示在窗体的左上角;在 Visual Basic 2008 中,BackgroundImage 平铺显示。

RightToLeft:

True

False

RightToLeft

Yes 枚举值

ScaleHeight

ScaleLeft

ScaleMode

ScaleTop

ScaleWidth

新的实现。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

StartUpPosition:

0 – Manual

1 – CenterOwner

2 – CenterScreen

3 – Windows Default

StartPosition

 Manual 枚举值

 CenterParent 枚举值

 CenterScreen 枚举值

 WindowsDefaultLocation 枚举值

Top

Top

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

WhatsThisButton

HelpButton

说明:

Visual Basic 2008 中的帮助行为存在一些差异。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

WhatsThisHelp

新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

Width

Width, Size

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

Form 方法

Visual Basic 6.0

Visual Basic 2008 等效项

Circle

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

Cls

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

Line

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

Move

SetBounds

说明:

坐标在 Visual Basic 2008 中以不同方式处理。有关更多信息,请参见坐标系统(针对 Visual Basic 6.0 用户)

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

Activate

Show

ShowShowDialog

TextHeight

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

TextWidth

新的实现。有关更多信息,请参见 图形(针对 Visual Basic 6.0 用户)

ValidateControls

Validate

说明:

Validate 方法返回 True 或 False;如果验证失败,ValidateControls 则引发错误。

WhatsThisMode

新的实现。有关更多信息,请参见帮助支持(针对 Visual Basic 6.0 用户)

ZOrder:

 0 – vbBringToFront

 1 - vbSendToBack

BringToFrontSendToBack 函数

 BringToFront

 SendToBack

窗体事件

Visual Basic 6.0

Visual Basic 2008 等效项

Activate

Activated

说明:

在 Visual Basic 6.0 中,Activate 事件仅当在应用程序中的窗体间切换时引发;在 Visual Basic 2008 中,在从其他应用程序切换过来时也会引发 Activated 事件。

Click

Click

说明:

MDI 窗体不支持 Click 事件。

DblClick

DoubleClick

Deactivate

Deactivate

说明:

在 Visual Basic 6.0 中,Deactivate 事件仅当在应用程序中的窗体间切换时引发;在 Visual Basic 2008 中,切换到其他应用程序时也会引发该事件。

DragDrop

DragOver

新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)

GotFocus

Enter

Initialize

New 方法

说明:

New 方法的行为与 Initialize 事件有所不同。有关更多信息,请参见 窗体任务(针对 Visual Basic 6.0 用户)

LinkClose

LinkError

LinkExecute

LinkOpen

无等效项。有关更多信息,请参见动态数据交换(针对 Visual Basic 6.0 用户)

MouseDown

MouseDown

说明:

MDI 窗体不支持 MouseDown 事件。

MouseMove

MouseMove

说明:

MDI 窗体不支持 MouseMove 事件。

MouseUp

MouseUp

说明:

MDI 窗体不支持 MouseUp 事件。

OLECompleteDrag

OLEDragDrop

OLEDragOver

OLEGiveFeedback

OLESetData

OLEStartDrag

新的实现。有关更多信息,请参见拖放(针对 Visual Basic 6.0 用户)

QueryUnload

FormClosing

说明:

在 Visual Basic 6.0 中,QueryUnload 采用两个参数(Cancel 和 UnloadMode)。在 Visual Basic 2008 中,Cancel 替换为 Cancel;UnloadMode 替换为 CloseReason

Terminate

Dispose 方法

说明:

Dispose 方法的行为与 Terminate 事件有所不同。有关更多信息,请参见 Form 事件(针对 Visual Basic 6.0 用户)

Unload

FormClosing

说明:

FormClosing 事件的行为与 Unload 事件有所不同。有关更多信息,请参见 Form 事件(针对 Visual Basic 6.0 用户)

请参见

概念

窗体任务(针对 Visual Basic 6.0 用户)

其他资源

Windows 窗体