Zurück zum Start
Language: Deutsch
Programming Language: C#
Published by: Thomas
Last Update: 4/23/2006
Views: 1090
Description
In einer PDA-Anwendung werden ausgehend von der Start-Form diverse weitere Forms geöffnet, und das in beliebigen Ebenen. So kann man vom Start etwa "Einstellungen" aufrufen, und von da wieder "Über uns". "Über uns" kann aber auch direkt auf der Startform geöffnet werden.
Alle Forms haben aber eins gemeinsam: einen Menüpunkt "Zurück zum Start". Klickt der User diesen an, sollen sich die aktuelle Form sowie alle ihre noch geöffneten Parents schließen - bis auf die Startform.
Ginge man nach obigem Beispiel würde das bei "Start > Einstellungen > Über uns" so aussehen, dass beim Klick auf den Menüpunkt die Form "Über uns" sowie "Einstellungen" geschlossen werden müssen, "Start" als erste Form aber offen bleiben soll, und wieder in den Vordergrund geholt werden muss.
Das klingt erstmal komplizierter, als die Lösung des Problems eigentlich ist. Die Methode Go läuft rekursiv von unten nach oben alle Forms durch. Wenn sie "oben" angekommen ist, sprich kein Parent mehr vorhanden ist, bricht sie ab und holt die oberste Form in den Vordergrund.
Das setzt allerdings voraus, dass die Owner-Eigenschaft gesetzt ist, was per default nicht der Fall ist (nach meinen Tests auch nicht, wenn man die Form via ShowDialog() öffnet, obwohl IntelliSense etwas anderes erzählt). Ein Aufruf muss also wie folgt aussehen:
About a = new About();
a.Owner = this;
a.ShowDialog();
Für den Fall das man eine Form aus einem UserControl heraus öffnet, muss man natürlich die Form verwenden, in der das UserControl sich befindet:
Detail d = new Detail(TypeId);
d.Owner = (Form)this.Parent.Parent;
d.Show();
In diesem Fall befindet sich das UserControl in einem Panel (Parent) was wiederum im eigentlichen Parent, der Form liegt (Parent.Parent).
Last but not least der Aufruf der Funktion zum Schließen:
GoToStart.Go(this);
Auch hier gilt natürlich das Gleiche wie eben erwähnt, beim Aufruf aus einem UserControl muss die Parent-Form genommen werden, ansonsten die aktuelle Instanz (this).
Code
No comments avaiable
Add a comment
Name *
Email (won't be displayed) *
Website
Comment *
Security Code *