14.2 Die Subfenster
Meistens sind die von einem MDI-Hauptfenster verwalteten Subfenster vom gleichen Typ. Eine Anwendung darf aber auch mit verschiedenartigen Subfenstern arbeiten.
Ein Fenster in einer Anwendung, das ein MDI-Hauptfenster enthält, ist nicht automatisch ein Subfenster – dazu muss erst mit der Eigenschaft MdiParent eine Beziehung hergestellt werden. Wenn frm die Referenz auf das Subfenster ist, kann die Anweisung dazu so lauten:
frm.MdiParent = Me
Der Eigenschaft wird die Referenz auf das MDI-Hauptfenster übergeben.
Subfenster werden meistens aus dem Hauptfenster heraus geöffnet. Meist befindet sich zu diesem Zweck in der Menüleiste des Hauptfensters unter Datei ein Menüpunkt Neu... Die im Click-Ereignis des Menüpunktes angesprochene Methode erstellt ein Subfenster, das in einer eigenen Klasse als Windows-Form definiert ist.
Public Class Subfenster Private Shared Anzahl As Integer Sub New(ByVal haupt As Form) InitializeComponent() If haupt Is Nothing OrElse Not haupt.IsMdiContainer Then _ Throw New ArgumentException("Kein MDI-Fenster.") Me.MdiParent = haupt Anzahl += 1 Me.Text = "Dokument " & Anzahl End Sub End Class Private Sub Neu_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles Neu.Click Dim frm As New Subfenster(Me) frm.Show() End Sub
In der ersten Anweisung wird das Subfenster mit dem Klassenbezeichner Subfenster instanziiert und mit Show angezeigt. Der Konstruktor stellt sicher, dass es an einen MDI-Container gebunden wird und die Titelleiste die Nummer des Fensters angibt. Beachten Sie, dass die Eigenschaft MdiParent im Eigenschaftsfenster nicht angeboten wird – diese Anweisung müssen Sie in jedem Fall codieren.
MDI-Subfenster zeichnen sich durch einige besondere Charakteristika aus:
- Sie können mit der Maus an der Titelleiste gegriffen und verschoben werden, aber den Clientbereich des MDI-Hauptfensters können sie nicht verlassen. Stattdessen werden im Hauptfenster Bildlaufleisten angezeigt.
- Nach dem Maximieren des MDI-Subfensters nimmt es den gesamten Clientbereich des Hauptfensters ein und überdeckt alle anderen Subfenster. Die drei Titelleistenschaltflächen des maximierten MDI-Subfensters (Maximieren, Minimieren, Schliessen) werden in der Menüleiste des Hauptfensters eingeblendet. Außerdem wird der Text in der Titelleiste des Hauptfensters durch den des Subfensters in eckigen Klammern ergänzt.
- Im Gegensatz zu normalen Fenstern werden MDI-Subfenster nach dem Minimieren am unteren Rand des MDI-Hauptfensters und nicht in der Taskleiste von Windows abgelegt.
Sowohl beim Aktivieren als auch beim Schließen eines untergeordneten Fensters tritt im MDI-Hauptfenster das Ereignis MdiChildActivate auf, das dem Ereignishandler keine weiteren Informationen zum Ereignis zur Verfügung stellt.
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.