Laden...

MDI Parent in Usercontrol festlegen

Erstellt von zerberos vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.563 Views
Z
zerberos Themenstarter:in
520 Beiträge seit 2007
vor 12 Jahren
MDI Parent in Usercontrol festlegen

Hallo,

Ich habe in meinen Projekt ein UserControl. Aus diesem UserControl will ich jetzt eine andere Maske aufrufen. Da ich ein MDI Projekt habe muss ich ja für die neue Maske MDIParent festlegen.

Normal machen ich das mit this.MDIParent. Aber das geht ja im UserControl nicht. Was muss ich machen

atlas.Bilder_Bearbeiten b = new eatlas.Bilder_Bearbeiten();
b.MdiParent = ?????;
b.set_data(data);
b.Show();

Danke

1.564 Beiträge seit 2007
vor 12 Jahren

Hallo zerberos

Meinst du so was:


Form parentForm = this.FindForm();
Form mdiParent = parentForm != null ? parentForm.MdiParent : null;

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Florian Reischl,

technisch sicher möglich, schön ist das aber nicht. Siehe die folgende Begründung.

EDIT: Ok, im Grunde triffst du gar keine Annahme, was für eine Anwendung es ist, weil dein Code auch funktioniert, wenn MdiParent nulll ist. Das schwächt meinen Einwand natürlich. Trotzdem halte ich meinen Einwand insofern für berechtigt, dass er dazu animiert, sich über die Zusammenhänge Gedanken zu machen.

Hallo zerberos,

das UserControl sollte kein Annahme darüber machen, ob das Fenster, in dem es enthalten ist, in einer MDI- was sonst für einer Anwendung läuft. Mit anderen Worten, du solltest MdiParent überhaupt nicht setzen. Das musst du schon der Anwendung selbst oder zumindest ihren Forms überlassen.

Du kannst im UserControl z.B. ein eigenes Event definieren (siehe [FAQ] Eigenen Event definieren), was von dem Parent-Form abonniert werden kann, um das neue Form zu öffnen und dort (bei Bedarf) eben auch MdiParent zu setzen.

herbivore