Visual Basic 6.0 使用者可用的 MDIForm 物件
更新:2007 年 11 月
在 Visual Basic 6.0 中,MDIForm 是一種特殊類型的表單,可做為 MDI (多重文件介面) 應用程式的容器 (Container)。在 Visual Basic 2008 中,其 IsMdiContainer 屬性設為 true 的表單皆可做為 MDI 容器。
概念上的差異
子表單和多份 MDI 表單
在 Visual Basic 6.0 中,於子表單上設定 MDIChild 屬性,可將其指定為 MDI 表單的子表單,MDI 應用程式僅可包含單一 MDI 表單。
在 Visual Basic 2008 中,MdiParent 屬性取代了 MDIChild 屬性,並指定包含子表單的 MDI 表單,MDI 應用程式可擁有多個 MDI 容器。
BackColor 和 Picture 屬性
在 Visual Basic 6.0 中,MDIForm 的背景色彩可以藉由設定 BackColor 屬性來變更,並且可以設定 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 控制項。此外,圖形方法 (例如 Circle 或 Line) 不可在 MDIForm 上使用。
在 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 使用者可用的 Form 物件。
MDIForm 屬性 (Property) 和方法
Visual Basic 6.0 |
Visual Basic 2008 對等用法 |
---|---|
ActiveForm 屬性 |
|
Arrange 方法 |
|
AutoShowChildren 屬性 |
新實作。如需詳細資訊,請參閱 MDI 表單的 Show 行為已經變更。 |
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,則會在升級期間加入一行程式碼來顯示每個子表單。
請參閱
概念
Visual Basic 6.0 使用者可用的 Form 物件