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 窗体上显示图片。尽管可以设置窗体的 BackColorBackgroundImage 属性,将 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 属性

ActiveMdiChild

Arrange 方法

LayoutMdi

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 时显示各个子窗体。

请参见

概念

MDI(针对 Visual Basic 6.0 用户)

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

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

其他资源

多文档界面 (MDI) 应用程序