Wenn ein Fenster Unterfenster haben darf, liegt ein Multiple Document Interface (MDI) vor. Die Besonderheiten im Zusammenspiel von Haupt- und Subfenstern sind Gegenstand dieses Kapitels.
14 MDI-Anwendungen
MDI-Fähigkeiten (Multiple Document Interface) waren bis vor wenigen Jahren Standard bei allen Anwendungen, die mehrere gleichartige Dokumente verwalteten, zum Beispiel die älteren Versionen von Microsoft Word oder Microsoft Excel.
Kennzeichnend für MDI-Anwendungen ist ein übergeordnetes Hauptfenster, das im Zusammenspiel mit den ihm untergeordneten Fenstern besondere Verhaltensweisen zeigt. Die untergeordneten MDI-Fenster sind vom Hauptfenster abhängig. Das Hauptfenster agiert dabei als Container und steuert die Subfenster. So lassen sich zum Beispiel alle Subfenster innerhalb des Hauptfensters anordnen und ermöglichen einen einfachen Zugriff des Hauptfensters auf das aktive Subfenster.
Üblicherweise haben MDI-Hauptfenster einen dunkelgrauen Hintergrund (siehe Abbildung 14.1). Es gibt noch weitere typische, visuelle Charakteristiken, beispielsweise die Titelleiste der MDI-Hauptform und die Menüverwaltung. Wir werden darauf später noch eingehen. Natürlich können neben den MDI-Subfenstern auch »normale« Fenster aus einem MDI-Hauptfenster heraus geöffnet und angezeigt werden. Diese sind dann nicht vom Hauptfenster abhängig. Dazu zählen unter anderem auch Dialogfenster.
Anwendungen, die kein MDI-Hauptfenster haben, werden als SDI-Anwendungen (Single Document Interface) bezeichnet. Bisher haben wir nur SDI-Anwendungen entwickelt.
Abbildung 14.1 Beispiel einer MDI-Anwendung
14.1 Das MDI-Hauptfenster 

Normalerweise wird eine MDI-Anwendung mit dem Öffnen des Hauptfensters gestartet. Dazu setzen Sie die Eigenschaft IsMdiContainer der dafür vorgesehenen Form auf True. Der Unterschied zu einem herkömmlichen Fenster wird durch eine geänderte Rahmenart und Hintergrundfarbe kenntlich gemacht. Eine Änderung über die Eigenschaft BackColor ist nicht möglich, sondern Sie müssen die Änderungen in der Systemsteuerung vornehmen.
MDI-Hauptfenster haben üblicherweise eine Menü- und Symbolleiste und darüber hinaus auch meistens eine Statusleiste zur Anzeige von Zustandsinformationen. Symbol- und Statusleiste sind am Rand der Containerform angedockt.
Sie können auch beliebige andere Steuerelemente wie beispielsweise eine Schaltfläche im MDI-Hauptfenster positionieren. Diese sollten dann aber angedockt werden, sonst wird das nicht angedockte Steuerelement des Hauptfensters auf einem Subfenster angezeigt.
Schließen des Hauptfensters
Ein Fenster kann auf verschiedene Arten geschlossen werden:
- Die Methode Close wird auf das zu schließende Formular aufgerufen.
- Der Anwender wählt im Systemmenü Schliessen.
- Der Anwender klickt auf die X-Schaltfläche in der Titelleiste.
- Sie rufen die Methode Exit bzw. ExitThread der Klasse Application auf.
Wird das Hauptfenster einer MDI-Anwendung geschlossen, werden zuerst die FormClosing-Ereignisse aller Subfenster aufgerufen, erst daran anschließend das FormClosing-Ereignis des Hauptfensters.
Das FormClosing-Ereignis bietet sich dazu an, gegebenenfalls Daten zu sichern oder sogar den Schließvorgang durch e.Cancel=True abzubrechen. Wenn in einer MDI-Anwendung ein untergeordnetes Fenster das Schließen verweigert, führt das sogar dazu, dass die Anwendung nicht beendet werden kann.
Mausereignisse des Hauptfensters
Bei der Entwicklung eines Hauptfenster dürfen Sie ein wichtiges Unterscheidungsmerkmal im Vergleich zu einem »normalen« Fenster nicht unberücksichtigt lassen: MDI-Hauptfenster empfangen generell keine Mausereignisse.
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.