MDIForm-Objekt für Visual Basic 6.0-Benutzer
Aktualisiert: November 2007
In Visual Basic 6.0 war ein MDIForm ein besonderer Formulartyp, der als Container für eine MDI-(Multiple Document Interface)-Anwendung fungierte. In Visual Basic 2008 kann jedes Formular als MDI-Container fungieren, wenn seine IsMdiContainer-Eigenschaft auf true festgelegt wird.
Konzeptionelle Unterschiede
Untergeordnete Formulare und mehrere MDI-Formulare
Wenn in Visual Basic 6.0 die MDIChild-Eigenschaft auf ein untergeordnetes Formular festgelegt wurde, wurde dieses als untergeordnetes Element des MDI-Formulars identifiziert; eine MDI-Anwendung konnte nur über ein MDI-Formular verfügen.
In Visual Basic 2008 ersetzt die MdiParent-Eigenschaft die MDIChild-Eigenschaft. Sie gibt das MDI-Formular an, das das untergeordnete Formular enthält. MDI-Anwendungen können über mehrere MDI-Container verfügen.
BackColor-Eigenschaft und Picture-Eigenschaft
In Visual Basic 6.0 kann die Hintergrundfarbe für ein MDIForm geändert werden, indem die BackColor-Eigenschaft festgelegt wird. Durch eine entsprechende Festlegung der Picture-Eigenschaft kann ein Hintergrundbild angezeigt werden.
In Visual Basic 2008 ist es nicht möglich, die Hintergrundfarbe zu ändern oder auf einem MDI-Formular ein Bild anzuzeigen. Sie können zwar die BackColor-Eigenschaft und die BackgroundImage-Eigenschaft auf dem Formular festlegen, durch die Festlegung der IsMdiContainer-Eigenschaft auf true werden diese Einstellungen jedoch außer Kraft gesetzt.
AutoShowChildren-Eigenschaft
In Visual Basic 6.0 wird die AutoShowChildren-Eigenschaft eines MDI-Formulars verwendet, um beim Laden des Formulars automatisch ein untergeordnetes MDI-Formular anzuzeigen. Standardformulare zeigen dieses Verhalten nicht; beim Aufrufen der Load-Methode wird das Formular geladen, aber nicht angezeigt.
In Visual Basic 2008 müssen Sie die Show-Methode explizit aufrufen, um ein untergeordnetes MDI-Formular anzuzeigen.
Steuerelemente und Grafiken auf MDI-Formularen
In Visual Basic 6.0 können die meisten Steuerelemente einem MDIForm nicht hinzugefügt werden. Sie können nur angedockte Steuerelemente hinzufügen, z. B. die Steuerelemente Menu, StatusBar oder ToolBar. Außerdem können Grafikmethoden, z. B. Circle oder Line, nicht auf einem MDIForm verwendet werden.
In Visual Basic 2008 kann einem MDI-Formular jedes beliebige Steuerelement hinzugefügt werden, das Verhalten entspricht jedoch möglicherweise nicht Ihren Erwartungen. Alle Steuerelemente auf einem Formular, deren IsMdiContainer-Eigenschaft auf true festgelegt ist, "schweben" über allen untergeordneten MDI-Formularen. Obwohl die Grafikmethoden des Paint-Ereignisses aufgerufen werden können, wird die Grafik zur Laufzeit nicht angezeigt.
Änderungen am Code für MDI-Formulare
Im folgenden Beispiel werden Unterschiede in den Codierungstechniken von Visual Basic 6.0 und Visual Basic 2008 dargestellt.
Änderungen am Code zum Anzeigen untergeordneter MDI-Formulare
Im folgenden Code wird veranschaulicht, wie fünf Instanzen eines untergeordneten MDI-Formulars angezeigt werden.
' 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
Änderungen am Code zum Anordnen untergeordneter MDI-Fenster
Im folgenden Code wird veranschaulicht, wie Code geschrieben wird, um die Anordnung der Fenster in einer MDI-Anwendung zu ändern. Dabei wird davon ausgegangen, dass Sie Menüelemente für jede Option erstellt haben.
' 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
Entsprechungen für MDI-Formulareigenschaften und -Methoden
In der folgenden Tabelle sind die Eigenschaften und Methoden von Visual Basic 6.0 zusammen mit ihren Entsprechungen in Visual Basic 2008 aufgeführt. Es werden nur Eigenschaft und Methoden aufgeführt, die dem MDIForm-Objekt eigen sind. Informationen zu anderen Eigenschaften, Methoden und Ereignissen finden Sie unter Form-Objekt für Visual Basic 6.0-Benutzer.
MDIForm-Eigenschaften und -Methoden
Visual Basic 6.0 |
Visual Basic 2008-Entsprechung |
---|---|
ActiveForm-Eigenschaft |
|
Arrange-Methode |
|
AutoShowChildren-Eigenschaft |
Neue Implementierung. Weitere Informationen finden Sie unter Das Show-Verhalten des MDI-Formulars wurde geändert. |
BackColor-Eigenschaft |
Neue Implementierung. Der Hintergrund für ein MDI-Formular ist immer der Standard (Control). |
Picture-Eigenschaft |
Neue Implementierung. MDI-Formulare in Visual Basic 2008 können Bilder nicht direkt anzeigen. |
Hinweise zum Durchführen einer Aktualisierung
Wenn eine MDI-Anwendung von Visual Basic 6.0 auf Visual Basic 2008 aktualisiert wird, werden alle MDIForm-Objekte in reguläre Formulare umgewandelt. Ihre IsMdiContainer-Eigenschaft wird auf true festgelegt.
In Visual Basic 2008 ist die AutoShowChildren-Eigenschaft nicht mehr vorhanden. Zum Emulieren des Visual Basic 6.0-Verhaltens wird beim Aktualisieren eine Codezeile eingefügt, die für jedes untergeordnete Formular angibt, ob AutoShowChildren in der Originalanwendung auf true festgelegt war.
Siehe auch
Konzepte
MDI für Visual Basic 6.0-Benutzer
Form-Objekt für Visual Basic 6.0-Benutzer
Formularaufgaben für Visual Basic 6.0-Benutzer