MDIForm 对象(针对 Visual Basic 6.0 用户)
更新:2007 年 11 月
在 Visual Basic 6.0 中,MDIForm 是一种特殊类型的窗体,它用作 MDI(多文档界面)应用程序的容器。在 Visual Basic 2008 中,IsMdiContainer 属性设置为 true 的任何窗体都可用作 MDI 容器。
概念差异
子窗体和多个 MDI 窗体
在 Visual Basic 6.0 中,在子窗体上设置 MDIChild 属性可将它标识为 MDI 窗体的子级;MDI 应用程序只能有一个 MDI 窗体。
在 Visual Basic 2008 中,MdiParent 属性替换了 MDIChild 属性,并标识包含该子窗体的 MDI 窗体;MDI 应用程序可以有多个 MDI 容器。
背景色和图片属性
在 Visual Basic 6.0 中,通过设置 BackColor 属性可更改 MDIForm 的背景色,通过设置 Picture 属性可显示背景图片。
在 Visual Basic 2008 中,不能更改背景色,也不能在 MDI 窗体上显示图片。尽管可以设置窗体的 BackColor 和 BackgroundImage 属性,将 IsMdiContainer 属性设置为 true 即可使这些设置无效。
AutoShowChildren 属性
在 Visual Basic 6.0 中,MDI 窗体的 AutoShowChildren 属性用于在加载后自动显示 MDI 子窗体。标准窗体没有此行为;调用 Load 方法可加载窗体但不进行显示。
在 Visual Basic 2008 中,必须显式调用 Show 方法才能显示 MDI 子窗体。
MDI 窗体的控件和图形
在 Visual Basic 6.0 中,大多数控件都不能添加到 MDIForm。只能添加停靠控件(如 Menu、StatusBar 或 ToolBar 控件)。此外,MDIForm 上也不能使用图形方法(如 Circle 或 Line)。
在 Visual Basic 2008 中,可以将任何控件添加到 MDI 窗体;但其行为可能与预期不同。IsMdiContainer 属性设置为 true 的窗体上的任何控件都将“浮动”在所有 MDI 子窗体顶部。尽管可以在 Paint 事件中调用图形方法,运行时也不会显示图形。
MDI 窗体的代码更改
下面的示例演示 Visual Basic 6.0 与 Visual Basic 2008 在编码方法方面的差异。
显示 MDI 子窗体的代码更改
下面的代码演示如何显示 MDI 子窗体的五个实例。
' Visual Basic 6.0
Dim F(1 To 4) As New Form1
Private Sub MDIForm_Load()
Dim i As Integer
Load Form1
For i = 1 To 4
F(i).Caption = "Form" & i + 1
F(i).Show
Next I
End Sub
' Visual Basic
Private Sub MDIForm1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
Dim i As Integer = 0
For i = 0 To 4
Dim F As New FormChild
F.Text = "Form " & CStr(i + 1)
F.Show()
Next
End Sub
排列 MDI 子窗口的代码更改
下面的代码演示如何编写代码来更改 MDI 应用程序中窗口的排列。假定为每个选项都创建了菜单项。
' Visual Basic 6.0
Private Sub menuCascade_Click()
Me.Arrange vbCascade
End Sub
Private Sub menuTileHorizontally_Click()
Me.Arrange vbHorizontal
End Sub
Private Sub menuTileVertically_Click()
Me.Arrange vbVertical
End Sub
' Visual Basic
Private Sub CascadeToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles CascadeToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.Cascade)
End Sub
' Visual Basic
Private Sub TileVerticleToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles TileVerticalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileVertical)
End Sub
' Visual Basic
Private Sub TileHorizontalToolStripMenuItem_Click(ByVal sender As Object, _
ByVal e As EventArgs) Handles TileHorizontalToolStripMenuItem.Click
Me.LayoutMdi(MdiLayout.TileHorizontal)
End Sub
MDI 窗体属性和方法的等效项
下表列出了 Visual Basic 6.0 的属性和方法及其在 Visual Basic 2008 中的等效项。只列出了 MDIForm 对象特有的属性和方法,有关其他属性、方法和事件,请参见 窗体对象(针对 Visual Basic 6.0 用户)。
MDIForm 属性和方法
Visual Basic 6.0 |
Visual Basic 2008 等效项 |
---|---|
ActiveForm 属性 |
|
Arrange 方法 |
|
AutoShowChildren 属性 |
新的实现。有关更多信息,请参见 MDI 窗体显示行为已改变。 |
BackColor 属性 |
新的实现。MDI 窗体的背景始终是默认的 (Control)。 |
Picture 属性 |
新的实现。Visual Basic 2008 中的 MDI 窗体不能直接显示图片。 |
升级说明
将 MDI 应用程序从 Visual Basic 6.0 升级为 Visual Basic 2008 时,所有 MDIForm 对象都升级为常规窗体,并且其 IsMdiContainer 属性设置为 true。
在 Visual Basic 2008 中,不再存在 AutoShowChildren 属性。为模拟 Visual Basic 6.0 的行为,在升级过程中添加了一行代码,以便在原始应用程序中的 AutoShowChildren 设置为 true 时显示各个子窗体。