FormClosing-Abbruch entfernt MDI-Child

Chefbrenner

Grünschnabel
Hi Leute,

habe gerade ein seltsames Problem, dass nach .NET-Bug aussieht: Wenn ich in einer WindowsForms-Anwendung ein MDI-Child per X-Button schließe und das dadurch erzeugte FormClosing-Event per e.Cancel = true; abbreche, bleibt das Fenster zwar offen, es verschwindet aber trotzdem aus der Fenster-Liste (= Menü-Element, das MainMenuStrip.MdiWindowListItem zugewiesen wurde) des MDI-Parents. Hat irgend jemand eine Idee, wie ich das verhindern könnte?

Grüße,
Chefbrenner
 
MDIChild-Verwaltung

Das ist kein Bug. Ich schätze mal es liegt daran das Du die erzeugten Childs nicht in einer List zwischenspeicherst,
so wie man es auch normaler Weise macht. ;)

Ich hab Dir mal eine Demo gemacht wo Du sehen kannst wie man das bequem mithilfe einer BasisKlasse abfackeln kann.
Dabei werden im CodeBehind alle erzeugten MDIChilds in einer indexorientierten Collection gesammelt.
Die MDIChildFormBase Klasse ist die Klasse von der Du ableiten musst.
In der MDIChildFormCollection werden alle Referenen gespeichert.
Diese Klasse hab ich via des Singleton Patterns verfügbar gamacht, da diese nur einmal und ständig gebraucht wird.
Es wird für jedes erzeugte MDIChild eine ID Generiert. Hab dabei die Gesamtanzahl möglicher MDIChilds auf byte.MaxValue beschränkt.

Weiter hin siehst noch eine möglichkeit Basisfunktionalitäten in deine MDIChlids einzupflegen.
Ich meine damit Dinge die jedes MDIChild in deiner Anwendung implementieren muss.
  • Das Form.Closing Event wird in der MDIChildFormBase Klasse behandelt.
    Du könntest noch ein Flag einbauen welches das aktiviert und deaktiviert.
    Zusätzlich könntest zB noch den Abfragetext im Konstruktor der Basis parametisieren... .
  • MDIChildFormBase.Reset. Die Methode wird ausgelöst wenn ein MDIChild aktiviert wird.
    Somit könnte man zB Eingabeformulare wieder auf Standardeingaben zurücksetzen sobald sie aktiviert wurden...

Viel Spaß damit. :)
 
Zuletzt bearbeitet:
Tutorial für das Verwalten von Multi Document Interfaces (MDI)

Ich hab mal ein Tutorial dafür fertig gemacht.

[thread=252200]C# Verwalten eines Multi Document Interface (MDI) - Tutorial[/thread]
 

Neue Beiträge

Zurück